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 | 1f50b61329f84977a95708f4aad76b5391768f30 (patch) | |
| tree | 4f08c2e42e18190d6a74e7c6f5850fe60a2faac9 /llvm/lib/Target/PowerPC | |
| parent | 02c4de357322e58d57c0c4355e68913be29128fd (diff) | |
| download | bcm5719-llvm-1f50b61329f84977a95708f4aad76b5391768f30.tar.gz bcm5719-llvm-1f50b61329f84977a95708f4aad76b5391768f30.zip | |
Fix codegen for references to available_externally symbols. This fixes
PR4482.
llvm-svn: 74613
Diffstat (limited to 'llvm/lib/Target/PowerPC')
| -rw-r--r-- | llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 0563e5d59ec..a22dac82332 100644 --- a/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/llvm/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); |

