/** ** \file llvmtranslate/libllvmtranslate.hh ** \brief Public llvmtranslate module interface implementation. **/ #include #include #include // program_name #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #include #include #include #include #include // llvm::SMDiagnostic #include #include #include #include #pragma GCC diagnostic pop namespace llvmtranslate { std::pair, std::unique_ptr> translate(const ast::Ast& the_program) { auto ctx = std::make_unique(); auto module = std::make_unique(program_name, *ctx); Translator translate{*module, collect_escapes(the_program)}; translate(the_program); llvm::verifyModule(*module); return {std::move(ctx), std::move(module)}; } std::unique_ptr runtime_get(llvm::LLVMContext& ctx) { llvm::SMDiagnostic diag; return llvm::parseAssemblyString(runtime_string(), diag, ctx); } } // namespace llvmtranslate