summaryrefslogtreecommitdiff
path: root/tools/gold/gold-plugin.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-05-13 13:39:31 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-05-13 13:39:31 +0000
commit62bacd69c2a21d55c308fb3e94e550559762b32c (patch)
treef58c086db31a87656aa764dcde8598b979f92a4d /tools/gold/gold-plugin.cpp
parent49ed9211905ec586f1d23a7f337d335ae63b4635 (diff)
downloadllvm-62bacd69c2a21d55c308fb3e94e550559762b32c.tar.gz
llvm-62bacd69c2a21d55c308fb3e94e550559762b32c.tar.bz2
llvm-62bacd69c2a21d55c308fb3e94e550559762b32c.tar.xz
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
Diffstat (limited to 'tools/gold/gold-plugin.cpp')
-rw-r--r--tools/gold/gold-plugin.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp
index 16e645f8da..2e5c1790c6 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<const char *>(lto_codegen_compile(cg,
&bufsize));