Changes in directory llvm/lib/Target/PowerPC:
PPCAsmPrinter.cpp updated: 1.212 -> 1.213 --- Log message: A initialized global variable cannot be extern weak. However, if a global value's initializer is itself a external weak symbol, emit the weak reference. --- Diffs of the changes: (+10 -0) PPCAsmPrinter.cpp | 10 ++++++++++ 1 files changed, 10 insertions(+) Index: llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp diff -u llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp:1.212 llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp:1.213 --- llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp:1.212 Fri Dec 1 01:56:37 2006 +++ llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp Fri Dec 1 03:13:26 2006 @@ -605,6 +605,9 @@ } else { switch (I->getLinkage()) { case GlobalValue::LinkOnceLinkage: + case GlobalValue::ExternalWeakLinkage: + O << "\t.weak_reference " << name << "\n"; + break; case GlobalValue::WeakLinkage: O << "\t.globl " << name << '\n' << "\t.weak_definition " << name << '\n'; @@ -635,6 +638,13 @@ EmitAlignment(Align, I); O << name << ":\t\t\t\t; '" << I->getName() << "'\n"; + + // If the initializer is a extern weak symbol, remember to emit the weak + // reference! + if (const GlobalValue *GV = dyn_cast<GlobalValue>(C)) + if (GV->hasExternalWeakLinkage()) + ExtWeakSymbols.insert(Mang->getValueName(GV)); + EmitGlobalConstant(C); O << '\n'; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits