[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