diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/tools/gold/X86/comdat.ll | 1 | ||||
| -rw-r--r-- | llvm/test/tools/gold/X86/strip_names.ll | 36 | ||||
| -rw-r--r-- | llvm/test/tools/gold/X86/type-merge2.ll | 1 | ||||
| -rw-r--r-- | llvm/tools/gold/gold-plugin.cpp | 8 |
4 files changed, 46 insertions, 0 deletions
diff --git a/llvm/test/tools/gold/X86/comdat.ll b/llvm/test/tools/gold/X86/comdat.ll index f65ca73c806..c4c5df7aa36 100644 --- a/llvm/test/tools/gold/X86/comdat.ll +++ b/llvm/test/tools/gold/X86/comdat.ll @@ -1,6 +1,7 @@ ; RUN: llvm-as %s -o %t.o ; RUN: llvm-as %p/Inputs/comdat.ll -o %t2.o ; RUN: %gold -shared -o %t3.o -plugin %llvmshlibdir/LLVMgold.so %t.o %t2.o \ +; RUN: -plugin-opt=no-discard-value-names \ ; RUN: -plugin-opt=emit-llvm ; RUN: llvm-dis %t3.o -o - | FileCheck %s diff --git a/llvm/test/tools/gold/X86/strip_names.ll b/llvm/test/tools/gold/X86/strip_names.ll new file mode 100644 index 00000000000..f1b2cff3aaf --- /dev/null +++ b/llvm/test/tools/gold/X86/strip_names.ll @@ -0,0 +1,36 @@ +; RUN: llvm-as %s -o %t.o + +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: --plugin-opt=no-discard-value-names \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o -o - | FileCheck %s + +; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ +; RUN: --plugin-opt=emit-llvm \ +; RUN: --plugin-opt=discard-value-names \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o -o - | FileCheck ---check-prefix=NONAME %s + +; CHECK: @GlobalValueName +; CHECK: @foo(i32 %in) +; CHECK: somelabel: +; CHECK: %GV = load i32, i32* @GlobalValueName +; CHECK: %add = add i32 %in, %GV +; CHECK: ret i32 %add + +; NONAME: @GlobalValueName +; NONAME: @foo(i32) +; NONAME-NOT: somelabel: +; NONAME: %2 = load i32, i32* @GlobalValueName +; NONAME: %3 = add i32 %0, %2 +; NONAME: ret i32 %3 + +@GlobalValueName = global i32 0 + +define i32 @foo(i32 %in) { +somelabel: + %GV = load i32, i32* @GlobalValueName + %add = add i32 %in, %GV + ret i32 %add +} diff --git a/llvm/test/tools/gold/X86/type-merge2.ll b/llvm/test/tools/gold/X86/type-merge2.ll index 42ad0dafb29..205dd752a01 100644 --- a/llvm/test/tools/gold/X86/type-merge2.ll +++ b/llvm/test/tools/gold/X86/type-merge2.ll @@ -2,6 +2,7 @@ ; RUN: llvm-as %p/Inputs/type-merge2.ll -o %t2.o ; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \ ; RUN: --plugin-opt=emit-llvm \ +; RUN: --plugin-opt=no-discard-value-names \ ; RUN: -shared %t.o %t2.o -o %t3.o ; RUN: llvm-dis %t3.o -o - | FileCheck %s diff --git a/llvm/tools/gold/gold-plugin.cpp b/llvm/tools/gold/gold-plugin.cpp index 42e93b1c58f..46a5f4668b1 100644 --- a/llvm/tools/gold/gold-plugin.cpp +++ b/llvm/tools/gold/gold-plugin.cpp @@ -166,8 +166,10 @@ namespace options { static unsigned Parallelism = 0; #ifdef NDEBUG static bool DisableVerify = true; + static bool DiscardValueNames = true; #else static bool DisableVerify = false; + static bool DiscardValueNames = false; #endif static std::string obj_path; static std::string extra_library_path; @@ -224,6 +226,10 @@ namespace options { message(LDPL_FATAL, "Invalid parallelism level: %s", opt_ + 5); } else if (opt == "disable-verify") { DisableVerify = true; + } else if (opt == "discard-value-names") { + DiscardValueNames = true; + } else if (opt == "no-discard-value-names") { + DiscardValueNames = false; } else { // Save this option to pass to the code generator. // ParseCommandLineOptions() expects argv[0] to be program name. Lazily @@ -1113,6 +1119,7 @@ static void thinLTOBackendTask(claimed_file &F, const void *View, raw_fd_ostream *OS, unsigned TaskID) { // Need to use a separate context for each task LLVMContext Context; + Context.setDiscardValueNames(options::DiscardValueNames); Context.enableDebugTypeODRUniquing(); // Merge debug info types. Context.setDiagnosticHandler(diagnosticHandlerForContext, nullptr, true); @@ -1235,6 +1242,7 @@ static ld_plugin_status allSymbolsReadHook(raw_fd_ostream *ApiFile) { } LLVMContext Context; + Context.setDiscardValueNames(options::DiscardValueNames); Context.enableDebugTypeODRUniquing(); // Merge debug info types. Context.setDiagnosticHandler(diagnosticHandlerForContext, nullptr, true); |

