diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn index f0a3ee7571..8cf3daa93c 100644 --- a/src/tint/BUILD.gn +++ b/src/tint/BUILD.gn @@ -1122,8 +1122,8 @@ libtint_source_set("libtint_ir_builder_src") { sources = [ "ir/builder_impl.cc", "ir/builder_impl.h", - "ir/converter.cc", - "ir/converter.h", + "ir/from_program.cc", + "ir/from_program.h", ] deps = [ ":libtint_ast_src", diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt index 26995d3d64..f47d2cea2c 100644 --- a/src/tint/CMakeLists.txt +++ b/src/tint/CMakeLists.txt @@ -727,14 +727,14 @@ if(${TINT_BUILD_IR}) ir/construct.h ir/convert.cc ir/convert.h - ir/converter.cc - ir/converter.h ir/debug.cc ir/debug.h ir/disassembler.cc ir/disassembler.h ir/discard.cc ir/discard.h + ir/from_program.cc + ir/from_program.h ir/flow_node.cc ir/flow_node.h ir/function.cc diff --git a/src/tint/cmd/loopy.cc b/src/tint/cmd/loopy.cc index 75102ebe1a..34ded9d9e4 100644 --- a/src/tint/cmd/loopy.cc +++ b/src/tint/cmd/loopy.cc @@ -19,7 +19,7 @@ #include "tint/tint.h" #if TINT_BUILD_IR -#include "src/tint/ir/converter.h" +#include "src/tint/ir/from_program.h" #include "src/tint/ir/module.h" #endif // TINT_BUILD_IR @@ -378,7 +378,7 @@ int main(int argc, const char** argv) { loop_count = options.loop_count; } for (uint32_t i = 0; i < loop_count; ++i) { - auto result = tint::ir::Converter::FromProgram(program.get()); + auto result = tint::ir::FromProgram(program.get()); if (!result) { std::cerr << "Failed to build IR from program: " << result.Failure() << std::endl; } diff --git a/src/tint/cmd/main.cc b/src/tint/cmd/main.cc index 24e0dba908..76a92565af 100644 --- a/src/tint/cmd/main.cc +++ b/src/tint/cmd/main.cc @@ -49,9 +49,9 @@ #include "tint/tint.h" #if TINT_BUILD_IR -#include "src/tint/ir/converter.h" // nogncheck #include "src/tint/ir/debug.h" // nogncheck #include "src/tint/ir/disassembler.h" // nogncheck +#include "src/tint/ir/from_program.h" // nogncheck #include "src/tint/ir/module.h" // nogncheck #endif // TINT_BUILD_IR @@ -1086,7 +1086,7 @@ int main(int argc, const char** argv) { #if TINT_BUILD_IR if (options.dump_ir || options.dump_ir_graph) { - auto result = tint::ir::Converter::FromProgram(program.get()); + auto result = tint::ir::FromProgram(program.get()); if (!result) { std::cerr << "Failed to build IR from program: " << result.Failure() << std::endl; } else { diff --git a/src/tint/ir/converter.h b/src/tint/ir/converter.h deleted file mode 100644 index 8defd83a34..0000000000 --- a/src/tint/ir/converter.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2023 The Tint Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef SRC_TINT_IR_CONVERTER_H_ -#define SRC_TINT_IR_CONVERTER_H_ - -#include - -#include "src/tint/ir/module.h" -#include "src/tint/utils/result.h" - -// Forward Declarations -namespace tint { -class Program; -} // namespace tint - -namespace tint::ir { - -/// Class for converting into and out of IR. -class Converter { - public: - /// The result type for the FromProgram method. - using Result = utils::Result; - - /// Builds an ir::Module from the given Program - /// @param program the Program to use. - /// @returns the `utiils::Result` of generating the IR. The result will contain the `ir::Module` - /// on success, otherwise the `std::string` error. - /// - /// @note this assumes the program |IsValid|, and has had const-eval done so - /// any abstract values have been calculated and converted into the relevant - /// concrete types. - static Result FromProgram(const Program* program); - - /// Converts the module back to a Program - /// @returns the resulting program, or nullptr on error - /// (Note, this will probably turn into a utils::Result, just stubbing for now) - static const Program* ToProgram(); -}; - -} // namespace tint::ir - -#endif // SRC_TINT_IR_CONVERTER_H_ diff --git a/src/tint/ir/converter.cc b/src/tint/ir/from_program.cc similarity index 75% rename from src/tint/ir/converter.cc rename to src/tint/ir/from_program.cc index e89be3a42e..d093103acd 100644 --- a/src/tint/ir/converter.cc +++ b/src/tint/ir/from_program.cc @@ -12,17 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/tint/ir/converter.h" +#include "src/tint/ir/from_program.h" #include "src/tint/ir/builder_impl.h" #include "src/tint/program.h" namespace tint::ir { -// static -Converter::Result Converter::FromProgram(const Program* program) { +utils::Result FromProgram(const Program* program) { if (!program->IsValid()) { - return Result{std::string("input program is not valid")}; + return std::string("input program is not valid"); } BuilderImpl b(program); @@ -31,12 +30,7 @@ Converter::Result Converter::FromProgram(const Program* program) { return b.Diagnostics().str(); } - return Result{r.Move()}; -} - -// static -const Program* Converter::ToProgram() { - return nullptr; + return r.Move(); } } // namespace tint::ir diff --git a/src/tint/ir/from_program.h b/src/tint/ir/from_program.h new file mode 100644 index 0000000000..1853a9ea0f --- /dev/null +++ b/src/tint/ir/from_program.h @@ -0,0 +1,42 @@ +// Copyright 2023 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef SRC_TINT_IR_FROM_PROGRAM_H_ +#define SRC_TINT_IR_FROM_PROGRAM_H_ + +#include + +#include "src/tint/ir/module.h" +#include "src/tint/utils/result.h" + +// Forward Declarations +namespace tint { +class Program; +} // namespace tint + +namespace tint::ir { + +/// Builds an ir::Module from the given Program +/// @param program the Program to use. +/// @returns the `utiils::Result` of generating the IR. The result will contain the `ir::Module` on +/// success, otherwise the `std::string` error. +/// +/// @note this assumes the `program.IsValid()`, and has had const-eval done so +/// any abstract values have been calculated and converted into the relevant +/// concrete types. +utils::Result FromProgram(const Program* program); + +} // namespace tint::ir + +#endif // SRC_TINT_IR_FROM_PROGRAM_H_ diff --git a/src/tint/writer/spirv/generator.cc b/src/tint/writer/spirv/generator.cc index 1e44c7061b..de6178be28 100644 --- a/src/tint/writer/spirv/generator.cc +++ b/src/tint/writer/spirv/generator.cc @@ -18,7 +18,7 @@ #include "src/tint/writer/spirv/generator_impl.h" #if TINT_BUILD_IR -#include "src/tint/ir/converter.h" // nogncheck +#include "src/tint/ir/from_program.h" // nogncheck #include "src/tint/writer/spirv/generator_impl_ir.h" // nogncheck #endif // TINT_BUILD_IR @@ -41,7 +41,7 @@ Result Generate(const Program* program, const Options& options) { #if TINT_BUILD_IR if (options.use_tint_ir) { // Convert the AST program to an IR module. - auto ir = ir::Converter::FromProgram(program); + auto ir = ir::FromProgram(program); if (!ir) { result.error = "IR converter: " + ir.Failure(); return result;