summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86Subtarget.cpp
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2008-07-03 07:43:14 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2008-07-03 07:43:14 +0000
commit4827deb74f9aa9dc922ab68d1d3bda92d7a98585 (patch)
treead1b43f1bf92af97fa4c8c152836aa8fb5b93531 /llvm/lib/Target/X86/X86Subtarget.cpp
parenta96eabaab70ba13733ad726136f4d03a35d896a5 (diff)
downloadbcm5719-llvm-4827deb74f9aa9dc922ab68d1d3bda92d7a98585.tar.gz
bcm5719-llvm-4827deb74f9aa9dc922ab68d1d3bda92d7a98585.zip
llvm-gcc sometimes marks external declarations hidden, because intializers are
processed separately. Honour such situation and emit PIC relocations properly in such case. llvm-svn: 53091
Diffstat (limited to 'llvm/lib/Target/X86/X86Subtarget.cpp')
-rw-r--r--llvm/lib/Target/X86/X86Subtarget.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86Subtarget.cpp b/llvm/lib/Target/X86/X86Subtarget.cpp
index b4c58496961..fa630edb389 100644
--- a/llvm/lib/Target/X86/X86Subtarget.cpp
+++ b/llvm/lib/Target/X86/X86Subtarget.cpp
@@ -47,7 +47,8 @@ bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue* GV,
// Extra load is needed for all externally visible.
if (isDirectCall)
return false;
- if (GV->hasInternalLinkage() || GV->hasHiddenVisibility())
+ if (GV->hasInternalLinkage() ||
+ (GV->hasHiddenVisibility() && !GV->isDeclaration()))
return false;
return true;
} else if (isTargetCygMing() || isTargetWindows()) {
OpenPOWER on IntegriCloud