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

Reply via email to