diff options
-rw-r--r-- | lib/Target/ARM/ARMAsmPrinter.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index c1946ded14..de12dfa7c9 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -121,7 +121,8 @@ namespace { printDataDirective(MCPV->getType()); ARMConstantPoolValue *ACPV = (ARMConstantPoolValue*)MCPV; - std::string Name = Mang->getValueName(ACPV->getGV()); + GlobalValue *GV = ACPV->getGV(); + std::string Name = Mang->getValueName(GV); if (ACPV->isNonLazyPointer()) { GVNonLazyPtrs.insert(Name); O << TAI->getPrivateGlobalPrefix() << Name << "$non_lazy_ptr"; @@ -132,6 +133,11 @@ namespace { << utostr(ACPV->getLabelId()) << "+" << (unsigned)ACPV->getPCAdjustment() << ")"; O << "\n"; + + // If the constant pool value is a extern weak symbol, remember to emit + // the weak reference. + if (GV->hasExternalWeakLinkage()) + ExtWeakSymbols.insert(GV); } void getAnalysisUsage(AnalysisUsage &AU) const { |