mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-18 14:31:27 +00:00
available_externally (hidden or not) GVs are always accessed via stubs. rdar://9027648.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126191 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fcfcdbc86a
commit
af05c69ba0
@ -171,7 +171,9 @@ ARMSubtarget::GVIsIndirectSymbol(const GlobalValue *GV,
|
||||
|
||||
// Materializable GVs (in JIT lazy compilation mode) do not require an extra
|
||||
// load from stub.
|
||||
bool isDecl = GV->isDeclaration() && !GV->isMaterializable();
|
||||
bool isDecl = GV->hasAvailableExternallyLinkage();
|
||||
if (GV->isDeclaration() && !GV->isMaterializable())
|
||||
isDecl = true;
|
||||
|
||||
if (!isTargetDarwin()) {
|
||||
// Extra load is needed for all externally visible.
|
||||
|
16
test/CodeGen/ARM/available_externally.ll
Normal file
16
test/CodeGen/ARM/available_externally.ll
Normal file
@ -0,0 +1,16 @@
|
||||
; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=pic | FileCheck %s
|
||||
; rdar://9027648
|
||||
|
||||
@A = available_externally hidden constant i32 1
|
||||
@B = external hidden constant i32
|
||||
|
||||
define i32 @t1() {
|
||||
%tmp = load i32* @A
|
||||
store i32 %tmp, i32* @B
|
||||
ret i32 %tmp
|
||||
}
|
||||
|
||||
; CHECK: L_A$non_lazy_ptr:
|
||||
; CHECK-NEXT: .long _A
|
||||
; CHECK: L_B$non_lazy_ptr:
|
||||
; CHECK-NEXT: .long _B
|
Loading…
x
Reference in New Issue
Block a user