mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-29 07:53:33 +00:00
[NVPTX] Emit .weak when linkage is not external, internal, or private
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211926 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d51ee46dc5
commit
a54609ed93
@ -1305,6 +1305,10 @@ bool NVPTXAsmPrinter::doFinalization(Module &M) {
|
||||
// external global variable with init -> .visible
|
||||
// external without init -> .extern
|
||||
// appending -> not allowed, assert.
|
||||
// for any linkage other than
|
||||
// internal, private, linker_private,
|
||||
// linker_private_weak, linker_private_weak_def_auto,
|
||||
// we emit -> .weak.
|
||||
|
||||
void NVPTXAsmPrinter::emitLinkageDirective(const GlobalValue *V,
|
||||
raw_ostream &O) {
|
||||
@ -1330,6 +1334,9 @@ void NVPTXAsmPrinter::emitLinkageDirective(const GlobalValue *V,
|
||||
msg.append(V->getName().str());
|
||||
msg.append("has unsupported appending linkage type");
|
||||
llvm_unreachable(msg.c_str());
|
||||
} else if (!V->hasInternalLinkage() &&
|
||||
!V->hasPrivateLinkage()) {
|
||||
O << ".weak ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
12
test/CodeGen/NVPTX/weak-linkage.ll
Normal file
12
test/CodeGen/NVPTX/weak-linkage.ll
Normal file
@ -0,0 +1,12 @@
|
||||
; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
|
||||
|
||||
|
||||
; CHECK: .weak .func foo
|
||||
define weak void @foo() {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: .visible .func bar
|
||||
define void @bar() {
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user