Changes in directory llvm/lib/Target/ARM:

ARMAsmPrinter.cpp updated: 1.24 -> 1.25
---
Log message:

print common symbols


---
Diffs of the changes:  (+33 -17)

 ARMAsmPrinter.cpp |   50 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 33 insertions(+), 17 deletions(-)


Index: llvm/lib/Target/ARM/ARMAsmPrinter.cpp
diff -u llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.24 
llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.25
--- llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.24  Tue Oct 17 13:04:52 2006
+++ llvm/lib/Target/ARM/ARMAsmPrinter.cpp       Thu Oct 19 08:30:40 2006
@@ -278,26 +278,42 @@
     unsigned Size = TD->getTypeSize(C->getType());
     unsigned Align = TD->getTypeAlignment(C->getType());
 
-    switch (I->getLinkage()) {
-    default:
-      assert(0 && "Unknown linkage type!");
-      break;
-    case GlobalValue::ExternalLinkage:
-      O << "\t.globl " << name << "\n";
-      break;
-    case GlobalValue::InternalLinkage:
-      break;
-    }
+    if (C->isNullValue() &&
+        (I->hasLinkOnceLinkage() || I->hasInternalLinkage() ||
+         I->hasWeakLinkage())) {
+      SwitchToDataSection(".data", I);
+      if (I->hasInternalLinkage())
+        O << "\t.local " << name << "\n";
+
+      O << "\t.comm " << name << "," << TD->getTypeSize(C->getType())
+        << "," << (unsigned)TD->getTypeAlignment(C->getType());
+      O << "\t\t";
+      O << TAI->getCommentString() << " ";
+      WriteAsOperand(O, I, true, true, &M);
+      O << "\n";
+    } else {
+      switch (I->getLinkage()) {
+      default:
+        assert(0 && "Unknown linkage type!");
+        break;
+      case GlobalValue::ExternalLinkage:
+        O << "\t.globl " << name << "\n";
+        break;
+      case GlobalValue::InternalLinkage:
+        break;
+      }
 
-    assert (!C->isNullValue());
-    SwitchToDataSection(".data", I);
+      assert (!C->isNullValue());
+      SwitchToDataSection(".data", I);
 
-    EmitAlignment(Align, I);
-    O << "\t.type " << name << ", %object\n";
-    O << "\t.size " << name << ", " << Size << "\n";
-    O << name << ":\n";
-    EmitGlobalConstant(C);
+      EmitAlignment(Align, I);
+      O << "\t.type " << name << ", %object\n";
+      O << "\t.size " << name << ", " << Size << "\n";
+      O << name << ":\n";
+      EmitGlobalConstant(C);
+    }
   }
+
   AsmPrinter::doFinalization(M);
   return false; // success
 }



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to