diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-01 16:53:44 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-01 16:53:44 +0000 |
commit | eebec97cac006a6aa9c1a1792aa6a5384e357059 (patch) | |
tree | eb2970bf912513297584389f19da10890116210c /lib/Target/PowerPC/AsmPrinter | |
parent | 73e6e6f36ba28477793ea8001a76dffa19090dcf (diff) | |
download | external_llvm-eebec97cac006a6aa9c1a1792aa6a5384e357059.zip external_llvm-eebec97cac006a6aa9c1a1792aa6a5384e357059.tar.gz external_llvm-eebec97cac006a6aa9c1a1792aa6a5384e357059.tar.bz2 |
Fix codegen for references to available_externally symbols. This fixes
PR4482.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74613 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/AsmPrinter')
-rw-r--r-- | lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 0563e5d..a22dac8 100644 --- a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp @@ -189,7 +189,8 @@ namespace { if (MO.getType() == MachineOperand::MO_GlobalAddress) { GlobalValue *GV = MO.getGlobal(); if (((GV->isDeclaration() || GV->hasWeakLinkage() || - GV->hasLinkOnceLinkage() || GV->hasCommonLinkage()))) { + GV->hasLinkOnceLinkage() || GV->hasCommonLinkage() || + GV->hasAvailableExternallyLinkage()))) { // Dynamically-resolved functions need a stub for the function. std::string Name = Mang->getValueName(GV); FnStubs.insert(Name); @@ -382,13 +383,15 @@ void PPCAsmPrinter::printOp(const MachineOperand &MO) { // External or weakly linked global variables need non-lazily-resolved stubs if (TM.getRelocationModel() != Reloc::Static) { - if (GV->isDeclaration() || GV->isWeakForLinker()) { + if (GV->isDeclaration() || GV->isWeakForLinker() || + GV->hasAvailableExternallyLinkage()) { if (GV->hasHiddenVisibility()) { - if (!GV->isDeclaration() && !GV->hasCommonLinkage()) - O << Name; - else { + if (GV->isDeclaration() || GV->hasCommonLinkage() || + GV->hasAvailableExternallyLinkage()) { HiddenGVStubs.insert(Name); printSuffixedName(Name, "$non_lazy_ptr"); + } else { + O << Name; } } else { GVStubs.insert(Name); |