diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-05-13 13:39:31 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-05-13 13:39:31 +0000 |
commit | 62bacd69c2a21d55c308fb3e94e550559762b32c (patch) | |
tree | f58c086db31a87656aa764dcde8598b979f92a4d | |
parent | 49ed9211905ec586f1d23a7f337d335ae63b4635 (diff) |
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
-rw-r--r-- | tools/gold/gold-plugin.cpp | 14 |
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)); |