If the constant pool value is a extern weak symbol, emit the weak reference.
authorLauro Ramos Venancio <lauro.venancio@gmail.com>
Fri, 26 Jan 2007 19:51:32 +0000 (19:51 +0000)
committerLauro Ramos Venancio <lauro.venancio@gmail.com>
Fri, 26 Jan 2007 19:51:32 +0000 (19:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33543 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMAsmPrinter.cpp

index c1946ded1459c2401b579258981115f920657138..de12dfa7c952bffe126d4b8b2729b56168e5ffa1 100644 (file)
@@ -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 {