diff options
| author | Teresa Johnson <tejohnson@google.com> | 2016-04-20 15:16:57 +0000 |
|---|---|---|
| committer | Teresa Johnson <tejohnson@google.com> | 2016-04-20 15:16:57 +0000 |
| commit | 143d15bc29bdd913c9bfa92123738bcd141013b9 (patch) | |
| tree | 8df6e1bbd57060a95ece454c749246c411747629 | |
| parent | 2081dbcc7a9839066ac2e6c914decfaf82427bcb (diff) | |
| download | bcm5719-llvm-143d15bc29bdd913c9bfa92123738bcd141013b9.tar.gz bcm5719-llvm-143d15bc29bdd913c9bfa92123738bcd141013b9.zip | |
Re-enable "[gold-plugin] Disable name for values other than GlobalValue"
This restores r266871 with a fix for gold tests relying on the value
names, when using a release compiler, by adding a way to disable the
default discarding. Update affected tests to use the new mechanism so
that value names are preserved as expected, regardless of how the
compiler was built.
llvm-svn: 266881
| -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); |

