From 62bacd69c2a21d55c308fb3e94e550559762b32c Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 13 May 2010 13:39:31 +0000 Subject: [PATCH] Add an also-emit-llvm option to the gold plugin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103714 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/gold/gold-plugin.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp index 16e645f8daa..2e5c1790c68 100644 --- a/tools/gold/gold-plugin.cpp +++ b/tools/gold/gold-plugin.cpp @@ -59,6 +59,7 @@ namespace { namespace options { static bool generate_api_file = false; + static std::string bc_path; static const char *as_path = NULL; // Additional options to pass into the code generator. // Note: This array will contain all plugin options which are not claimed @@ -81,6 +82,14 @@ namespace options { } else { as_path = strdup(opt + 3); } + } else if(llvm::StringRef(opt).startswith("also-emit-llvm=")) { + const char *path = opt + strlen("also-emit-llvm="); + if (bc_path != "") { + (*message)(LDPL_WARNING, "Path to the output IL file specified twice. " + "Discarding %s", opt); + } else { + bc_path = path; + } } else { // Save this option to pass to the code generator. extra.push_back(std::string(opt)); @@ -374,6 +383,11 @@ static ld_plugin_status all_symbols_read_hook(void) { } } + if (options::bc_path != "") { + bool err = lto_codegen_write_merged_modules(cg, options::bc_path.c_str()); + if (err) + (*message)(LDPL_FATAL, "Failed to write the output file."); + } size_t bufsize = 0; const char *buffer = static_cast(lto_codegen_compile(cg, &bufsize));