diff options
| author | David Tenty <daltenty@ibm.com> | 2019-12-05 15:21:53 -0500 |
|---|---|---|
| committer | David Tenty <daltenty@ibm.com> | 2019-12-05 15:22:53 -0500 |
| commit | 1ea1e053f6a10955a5aa8f5a8007544a846766e5 (patch) | |
| tree | 3dd61a9364220f3f79ab9490cd36e770d7f6f9e6 /llvm/lib | |
| parent | f5193d87feaedb411255e92979abd6b62522bc38 (diff) | |
| download | bcm5719-llvm-1ea1e053f6a10955a5aa8f5a8007544a846766e5.tar.gz bcm5719-llvm-1ea1e053f6a10955a5aa8f5a8007544a846766e5.zip | |
[AIX] Make sure to use QualNames for external global objects
Summary: Previously we only handled the case where the csect hadn't been set up yet, so we'd hit an assert later on.
Reviewers: jasonliu, DiggerLin, stevewan
Reviewed By: jasonliu
Subscribers: hubert.reinterpretcast, wuzish, nemanjai, hiraditya, kbarton, jsji, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71032
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp index 9b8fb4ddd31..db2352b74e1 100644 --- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -1883,18 +1883,20 @@ PPCAIXAsmPrinter::getMCSymbolForTOCPseudoMO(const MachineOperand &MO) { // declaration of a function, then XSym is an external referenced symbol. // Hence we may need to explictly create a MCSectionXCOFF for it so that we // can return its symbol later. - if (GO->isDeclaration() && !XSym->hasContainingCsect()) { - // Make sure the storage class is set. - const XCOFF::StorageClass SC = - TargetLoweringObjectFileXCOFF::getStorageClassForGlobal(GO); - XSym->setStorageClass(SC); - - MCSectionXCOFF *Csect = OutStreamer->getContext().getXCOFFSection( - XSym->getName(), isa<Function>(GO) ? XCOFF::XMC_DS : XCOFF::XMC_UA, - XCOFF::XTY_ER, SC, SectionKind::getMetadata()); - XSym->setContainingCsect(Csect); - - return Csect->getQualNameSymbol(); + if (GO->isDeclaration()) { + if (!XSym->hasContainingCsect()) { + // Make sure the storage class is set. + const XCOFF::StorageClass SC = + TargetLoweringObjectFileXCOFF::getStorageClassForGlobal(GO); + XSym->setStorageClass(SC); + + MCSectionXCOFF *Csect = OutStreamer->getContext().getXCOFFSection( + XSym->getName(), isa<Function>(GO) ? XCOFF::XMC_DS : XCOFF::XMC_UA, + XCOFF::XTY_ER, SC, SectionKind::getMetadata()); + XSym->setContainingCsect(Csect); + } + + return XSym->getContainingCsect()->getQualNameSymbol(); } // Handle initialized global variables. |

