mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-20 12:31:40 +00:00
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
This commit is contained in:
parent
8eabcf7ce7
commit
f214fe8b32
22
test/tools/gold/coff.ll
Normal file
22
test/tools/gold/coff.ll
Normal file
@ -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
|
||||||
|
}
|
@ -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
|
// 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
|
// now or it will not be copied to the merged module. Instead we force
|
||||||
// it to be copied and then internalize it.
|
// it to be copied and then internalize it.
|
||||||
Internalize.insert(Sym.name);
|
Internalize.insert(GV->getName());
|
||||||
}
|
}
|
||||||
break;
|
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.
|
// 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.
|
// In that case we have to make sure we don't end up internalizing it.
|
||||||
if (!GV->isDiscardableIfUnused())
|
if (!GV->isDiscardableIfUnused())
|
||||||
Maybe.erase(Sym.name);
|
Maybe.erase(GV->getName());
|
||||||
|
|
||||||
// fall-through
|
// fall-through
|
||||||
case LDPR_PREEMPTED_REG:
|
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
|
// and in that module the address might be significant, but that
|
||||||
// copy will be LDPR_PREEMPTED_IR.
|
// copy will be LDPR_PREEMPTED_IR.
|
||||||
if (GV->hasLinkOnceODRLinkage())
|
if (GV->hasLinkOnceODRLinkage())
|
||||||
Maybe.insert(Sym.name);
|
Maybe.insert(GV->getName());
|
||||||
keepGlobalValue(*GV, KeptAliases);
|
keepGlobalValue(*GV, KeptAliases);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user