From: Rafael Espindola Date: Tue, 9 Dec 2014 16:50:57 +0000 (+0000) Subject: Remember the unmangled name in the plugin. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f214fe8b32b78d414838f85d6e758cfca0e5c234;p=oota-llvm.git Remember the unmangled name in the plugin. This allows it to work with non trivial manglings like the one in COFF. Amusingly, this can be tested with gold, as emit-llvm causes the plugin to exit before any COFF is generated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223790 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/gold/coff.ll b/test/tools/gold/coff.ll new file mode 100644 index 00000000000..b66f028a14d --- /dev/null +++ b/test/tools/gold/coff.ll @@ -0,0 +1,22 @@ +; RUN: llvm-as %s -o %t.o +; RUN: ld -plugin %llvmshlibdir/LLVMgold.so -plugin-opt=emit-llvm \ +; RUN: -shared %t.o -o %t2.o +; RUN: llvm-dis %t2.o -o - | FileCheck %s + + +target datalayout = "m:w" + +; CHECK: define void @f() { +define void @f() { + ret void +} + +; CHECK: define internal void @g() { +define hidden void @g() { + ret void +} + +; CHECK: define internal void @h() { +define linkonce_odr void @h() { + ret void +} diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp index 972dbd32365..2cb181eca38 100644 --- a/tools/gold/gold-plugin.cpp +++ b/tools/gold/gold-plugin.cpp @@ -625,7 +625,7 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile, // Since we use the regular lib/Linker, we cannot just internalize GV // now or it will not be copied to the merged module. Instead we force // it to be copied and then internalize it. - Internalize.insert(Sym.name); + Internalize.insert(GV->getName()); } break; } @@ -638,7 +638,7 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile, // Gold might have selected a linkonce_odr and preempted a weak_odr. // In that case we have to make sure we don't end up internalizing it. if (!GV->isDiscardableIfUnused()) - Maybe.erase(Sym.name); + Maybe.erase(GV->getName()); // fall-through case LDPR_PREEMPTED_REG: @@ -651,7 +651,7 @@ getModuleForFile(LLVMContext &Context, claimed_file &F, raw_fd_ostream *ApiFile, // and in that module the address might be significant, but that // copy will be LDPR_PREEMPTED_IR. if (GV->hasLinkOnceODRLinkage()) - Maybe.insert(Sym.name); + Maybe.insert(GV->getName()); keepGlobalValue(*GV, KeptAliases); break; }