[llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86AsmPrinter.cpp
Anton Korobeynikov
asl at math.spbu.ru
Tue Oct 17 13:30:03 PDT 2006
Changes in directory llvm/lib/Target/X86:
X86ATTAsmPrinter.cpp updated: 1.67 -> 1.68
X86AsmPrinter.cpp updated: 1.201 -> 1.202
---
Log message:
Adding linkonce linkage codegeneration support for mingw32\cygwin
targets.
---
Diffs of the changes: (+26 -1)
X86ATTAsmPrinter.cpp | 14 +++++++++++++-
X86AsmPrinter.cpp | 13 +++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.67 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.68
--- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.67 Wed Oct 4 22:01:21 2006
+++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp Tue Oct 17 15:29:49 2006
@@ -89,13 +89,25 @@
EmitAlignment(4, F); // FIXME: This should be parameterized somewhere.
O << "\t.globl\t" << CurrentFnName << "\n";
break;
- case Function::WeakLinkage:
case Function::LinkOnceLinkage:
if (Subtarget->isTargetDarwin()) {
O << "\t.globl\t" << CurrentFnName << "\n";
O << "\t.weak_definition\t" << CurrentFnName << "\n";
} else if (Subtarget->isTargetCygwin()) {
EmitAlignment(4, F); // FIXME: This should be parameterized somewhere.
+ O << "\t.linkonce discard\n";
+ O << "\t.globl " << CurrentFnName << "\n";
+ } else {
+ EmitAlignment(4, F); // FIXME: This should be parameterized somewhere.
+ O << "\t.weak " << CurrentFnName << "\n";
+ }
+ break;
+ case Function::WeakLinkage:
+ if (Subtarget->isTargetDarwin()) {
+ O << "\t.globl\t" << CurrentFnName << "\n";
+ O << "\t.weak_definition\t" << CurrentFnName << "\n";
+ } else if (Subtarget->isTargetCygwin()) {
+ EmitAlignment(4, F); // FIXME: This should be parameterized somewhere.
O << "\t.weak " << CurrentFnName << "\n";
} else {
EmitAlignment(4, F); // FIXME: This should be parameterized somewhere.
Index: llvm/lib/Target/X86/X86AsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.201 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.202
--- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.201 Sat Oct 14 15:53:35 2006
+++ llvm/lib/Target/X86/X86AsmPrinter.cpp Tue Oct 17 15:29:49 2006
@@ -174,6 +174,19 @@
} else {
switch (I->getLinkage()) {
case GlobalValue::LinkOnceLinkage:
+ if (Subtarget->isTargetDarwin()) {
+ O << "\t.globl " << name << "\n"
+ << "\t.weak_definition " << name << "\n";
+ SwitchToDataSection(".section __DATA,__const_coal,coalesced", I);
+ } else if (Subtarget->isTargetCygwin()) {
+ O << "\t.section\t.llvm.linkonce.d." << name << ",\"aw\"\n"
+ << "\t.globl " << name << "\n"
+ << "\t.linkonce same_size\n";
+ } else {
+ O << "\t.section\t.llvm.linkonce.d." << name << ",\"aw\", at progbits\n"
+ << "\t.weak " << name << "\n";
+ }
+ break;
case GlobalValue::WeakLinkage:
if (Subtarget->isTargetDarwin()) {
O << "\t.globl " << name << "\n"
More information about the llvm-commits
mailing list