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\",@progbits\n" + << "\t.weak " << name << "\n"; + } + break; case GlobalValue::WeakLinkage: if (Subtarget->isTargetDarwin()) { O << "\t.globl " << name << "\n" _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits