From 9c6c975b61cba67c1bd8f97fe7057be83ad0d67f Mon Sep 17 00:00:00 2001 From: Zuzana Baranova <xbaranov@fi.muni.cz> Date: Sat, 22 Jun 2019 12:07:23 +0000 Subject: [PATCH] CC: Add link_bitcode virtual method to Native, call it in link(). --- divine/cc/codegen.hpp | 2 ++ divine/cc/native.cpp | 9 +++++++++ divine/cc/native.hpp | 1 + tools/divcc.cpp | 5 ----- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/divine/cc/codegen.hpp b/divine/cc/codegen.hpp index 14fe2e068..c2ba53c7b 100644 --- a/divine/cc/codegen.hpp +++ b/divine/cc/codegen.hpp @@ -17,7 +17,9 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +DIVINE_RELAX_WARNINGS #include <llvm/IR/Module.h> +DIVINE_UNRELAX_WARNINGS namespace divine::cc { diff --git a/divine/cc/native.cpp b/divine/cc/native.cpp index 9c703f3fc..b89e67c14 100644 --- a/divine/cc/native.cpp +++ b/divine/cc/native.cpp @@ -81,6 +81,15 @@ namespace divine::cc if ( !linked ) throw cc::CompileError( "lld failed, not linked" ); } + + std::unique_ptr< llvm::Module > mod = link_bitcode(); + std::string file_out = _po.outputFile != "" ? _po.outputFile : "a.out"; + cc::add_section( file_out, cc::llvm_section_name, _clang.serializeModule( *mod ) ); + } + + std::unique_ptr< llvm::Module > Native::link_bitcode() + { + return cc::link_bitcode< cc::Driver, false >( _files, _clang, _po.libSearchPath ); } Native::~Native() diff --git a/divine/cc/native.hpp b/divine/cc/native.hpp index b0ed388c4..404cc37d7 100644 --- a/divine/cc/native.hpp +++ b/divine/cc/native.hpp @@ -35,6 +35,7 @@ namespace divine::cc int compile_files(); void init_ld_args(); void link(); + virtual std::unique_ptr< llvm::Module > link_bitcode(); cc::ParsedOpts _po; PairedFiles _files; diff --git a/tools/divcc.cpp b/tools/divcc.cpp index 7d569a1b6..e446ab309 100644 --- a/tools/divcc.cpp +++ b/tools/divcc.cpp @@ -144,11 +144,6 @@ int main( int argc, char **argv ) nativeCC.compile_files(); nativeCC._cxx = brick::string::endsWith( argv[0], "divc++" ); nativeCC.link(); - - std::unique_ptr< llvm::Module > mod = cc::link_bitcode< rt::DiosCC, true >( pairedFiles, clang, po.libSearchPath ); - std::string file_out = po.outputFile != "" ? po.outputFile : "a.out"; - - cc::add_section( file_out, cc::llvm_section_name, clang.serializeModule( *mod ) ); return 0; } -- GitLab