forked from OSchip/llvm-project
fix a nasty bug where we were not treating available_externally
symbols as declarations in the X86 backend. This would manifest on darwin x86-32 as errors like this with -fvisibility=hidden: symbol '__ZNSbIcED1Ev' can not be undefined in a subtraction expression This fixes PR7353. llvm-svn: 105954
This commit is contained in:
parent
bbb798c7d1
commit
faa7bdccbf
|
@ -53,9 +53,12 @@ ClassifyGlobalReference(const GlobalValue *GV, const TargetMachine &TM) const {
|
|||
if (GV->hasDLLImportLinkage())
|
||||
return X86II::MO_DLLIMPORT;
|
||||
|
||||
// Materializable GVs (in JIT lazy compilation mode) do not require an
|
||||
// extra load from stub.
|
||||
bool isDecl = GV->isDeclaration() && !GV->isMaterializable();
|
||||
// Determine whether this is a reference to a definition or a declaration.
|
||||
// Materializable GVs (in JIT lazy compilation mode) do not require an extra
|
||||
// load from stub.
|
||||
bool isDecl = GV->hasAvailableExternallyLinkage();
|
||||
if (GV->isDeclaration() && !GV->isMaterializable())
|
||||
isDecl = true;
|
||||
|
||||
// X86-64 in PIC mode.
|
||||
if (isPICStyleRIPRel()) {
|
||||
|
|
|
@ -1,4 +1,27 @@
|
|||
; RUN: llc < %s -mtriple=i386-apple-darwin9 -relocation-model=pic -disable-fp-elim -unwind-tables | FileCheck %s
|
||||
|
||||
|
||||
|
||||
; PR7353
|
||||
|
||||
define available_externally hidden
|
||||
void @_ZNSbIcED1Ev() nounwind readnone ssp align 2 {
|
||||
entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void()* @test1() nounwind {
|
||||
entry:
|
||||
ret void()* @_ZNSbIcED1Ev
|
||||
}
|
||||
|
||||
; This must use movl of the stub, not an lea, since the function isn't being
|
||||
; emitted here.
|
||||
; CHECK: movl L__ZNSbIcED1Ev$non_lazy_ptr-L1$pb(
|
||||
|
||||
|
||||
|
||||
|
||||
; <rdar://problem/7383328>
|
||||
|
||||
@.str = private constant [12 x i8] c"hello world\00", align 1 ; <[12 x i8]*> [#uses=1]
|
||||
|
@ -28,3 +51,5 @@ return: ; preds = %entry
|
|||
|
||||
; CHECK: .private_extern _func.eh
|
||||
; CHECK: .private_extern _main.eh
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue