[llvm-commits] CVS: llvm/lib/Target/X86/X86AsmPrinter.cpp
Evan Cheng
evan.cheng at apple.com
Fri Dec 1 01:10:49 PST 2006
Changes in directory llvm/lib/Target/X86:
X86AsmPrinter.cpp updated: 1.217 -> 1.218
---
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: (+6 -11)
X86AsmPrinter.cpp | 17 ++++++-----------
1 files changed, 6 insertions(+), 11 deletions(-)
Index: llvm/lib/Target/X86/X86AsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.217 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.218
--- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.217 Fri Dec 1 01:38:23 2006
+++ llvm/lib/Target/X86/X86AsmPrinter.cpp Fri Dec 1 03:10:28 2006
@@ -177,17 +177,6 @@
O << "\t\t" << TAI->getCommentString() << " " << I->getName() << "\n";
} else {
switch (I->getLinkage()) {
- case GlobalValue::ExternalWeakLinkage:
- if (Subtarget->isTargetDarwin()) {
- assert(0 && "External weak linkage for Darwin not implemented yet");
- } else if (Subtarget->isTargetCygwin()) {
- // There is no external weak linkage on Mingw32 platform.
- // Defaulting just to external
- O << "\t.globl " << name << "\n";
- } else {
- O << "\t.weak " << name << "\n";
- break;
- }
case GlobalValue::LinkOnceLinkage:
case GlobalValue::WeakLinkage:
if (Subtarget->isTargetDarwin()) {
@@ -257,6 +246,12 @@
if (TAI->hasDotTypeDotSizeDirective())
O << "\t.size " << name << ", " << Size << "\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';
}
More information about the llvm-commits
mailing list