[llvm] r239726 - gold-plugin: save the .o when given -save-temps.
Rafael Espindola
rafael.espindola at gmail.com
Mon Jun 15 06:36:29 PDT 2015
Author: rafael
Date: Mon Jun 15 08:36:27 2015
New Revision: 239726
URL: http://llvm.org/viewvc/llvm-project?rev=239726&view=rev
Log:
gold-plugin: save the .o when given -save-temps.
The plugin now save the bitcode before and after optimizations and the
.o that is passed to the linker.
Modified:
llvm/trunk/test/tools/gold/emit-llvm.ll
llvm/trunk/tools/gold/gold-plugin.cpp
Modified: llvm/trunk/test/tools/gold/emit-llvm.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/gold/emit-llvm.ll?rev=239726&r1=239725&r2=239726&view=diff
==============================================================================
--- llvm/trunk/test/tools/gold/emit-llvm.ll (original)
+++ llvm/trunk/test/tools/gold/emit-llvm.ll Mon Jun 15 08:36:27 2015
@@ -12,6 +12,7 @@
; RUN: -shared %t.o -o %t3.o
; RUN: llvm-dis %t3.o.bc -o - | FileCheck %s
; RUN: llvm-dis %t3.o.opt.bc -o - | FileCheck --check-prefix=OPT %s
+; RUN: llvm-nm %t3.o.o | FileCheck --check-prefix=NM %s
; RUN: rm -f %t4.o
; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \
@@ -19,6 +20,8 @@
; RUN: -shared %t.o -o %t4.o
; RUN: not test -a %t4.o
+; NM: T f3
+
target triple = "x86_64-unknown-linux-gnu"
@g7 = extern_weak global i32
Modified: llvm/trunk/tools/gold/gold-plugin.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/gold/gold-plugin.cpp?rev=239726&r1=239725&r2=239726&view=diff
==============================================================================
--- llvm/trunk/tools/gold/gold-plugin.cpp (original)
+++ llvm/trunk/tools/gold/gold-plugin.cpp Mon Jun 15 08:36:27 2015
@@ -787,15 +787,20 @@ static void codegen(Module &M) {
legacy::PassManager CodeGenPasses;
SmallString<128> Filename;
+ if (!options::obj_path.empty())
+ Filename = options::obj_path;
+ else if (options::TheOutputType == options::OT_SAVE_TEMPS)
+ Filename = output_name + ".o";
+
int FD;
- if (options::obj_path.empty()) {
+ bool TempOutFile = Filename.empty();
+ if (TempOutFile) {
std::error_code EC =
sys::fs::createTemporaryFile("lto-llvm", "o", FD, Filename);
if (EC)
message(LDPL_FATAL, "Could not create temporary file: %s",
EC.message().c_str());
} else {
- Filename = options::obj_path;
std::error_code EC =
sys::fs::openFileForWrite(Filename.c_str(), FD, sys::fs::F_None);
if (EC)
@@ -816,7 +821,7 @@ static void codegen(Module &M) {
"Unable to add .o file to the link. File left behind in: %s",
Filename.c_str());
- if (options::obj_path.empty())
+ if (TempOutFile)
Cleanup.push_back(Filename.c_str());
}
More information about the llvm-commits
mailing list