Weak things initialized to 0 don't go in bss on Darwin.
authorDale Johannesen <dalej@apple.com>
Fri, 11 Jan 2008 00:54:37 +0000 (00:54 +0000)
committerDale Johannesen <dalej@apple.com>
Fri, 11 Jan 2008 00:54:37 +0000 (00:54 +0000)
Cosmetic changes to spacing to match gcc (some dejagnu
tests actually care).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45848 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/PowerPC/PPCTargetAsmInfo.cpp
lib/Target/X86/X86AsmPrinter.cpp
lib/Target/X86/X86TargetAsmInfo.cpp

index 5deb41b4a337038f7e69b2ba41a1053c3f6ccc83..fb8418157d9674b6ff1072e6132575ae50bf342d 100644 (file)
@@ -767,7 +767,7 @@ std::string DarwinAsmPrinter::getSectionForFunction(const Function &F) const {
   case Function::InternalLinkage: return TAI->getTextSection();
   case Function::WeakLinkage:
   case Function::LinkOnceLinkage:
-    return ".section __TEXT,__textcoal_nt,coalesced,pure_instructions";
+    return "\t.section __TEXT,__textcoal_nt,coalesced,pure_instructions";
   }
 }
 
@@ -869,13 +869,13 @@ bool DarwinAsmPrinter::doInitialization(Module &M) {
   
   // Prime text sections so they are adjacent.  This reduces the likelihood a
   // large data or debug section causes a branch to exceed 16M limit.
-  SwitchToTextSection(".section __TEXT,__textcoal_nt,coalesced,"
+  SwitchToTextSection("\t.section __TEXT,__textcoal_nt,coalesced,"
                       "pure_instructions");
   if (TM.getRelocationModel() == Reloc::PIC_) {
-    SwitchToTextSection(".section __TEXT,__picsymbolstub1,symbol_stubs,"
+    SwitchToTextSection("\t.section __TEXT,__picsymbolstub1,symbol_stubs,"
                           "pure_instructions,32");
   } else if (TM.getRelocationModel() == Reloc::DynamicNoPIC) {
-    SwitchToTextSection(".section __TEXT,__symbol_stub1,symbol_stubs,"
+    SwitchToTextSection("\t.section __TEXT,__symbol_stub1,symbol_stubs,"
                         "pure_instructions,16");
   }
   SwitchToTextSection(TAI->getTextSection());
@@ -917,8 +917,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
 
     if (C->isNullValue() && /* FIXME: Verify correct */
         !I->hasSection() &&
-        (I->hasInternalLinkage() || I->hasWeakLinkage() ||
-         I->hasLinkOnceLinkage() || I->hasExternalLinkage())) {
+        (I->hasInternalLinkage() || I->hasExternalLinkage())) {
       if (Size == 0) Size = 1;   // .comm Foo, 0 is undefined, avoid it.
       if (I->hasExternalLinkage()) {
         O << "\t.globl " << name << '\n';
@@ -941,7 +940,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
       case GlobalValue::WeakLinkage:
         O << "\t.globl " << name << '\n'
           << "\t.weak_definition " << name << '\n';
-        SwitchToDataSection(".section __DATA,__datacoal_nt,coalesced", I);
+        SwitchToDataSection("\t.section __DATA,__datacoal_nt,coalesced", I);
         break;
       case GlobalValue::AppendingLinkage:
         // FIXME: appending linkage variables should go into a section of
@@ -1008,7 +1007,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
   if (TM.getRelocationModel() == Reloc::PIC_) {
     for (std::set<std::string>::iterator i = FnStubs.begin(), e = FnStubs.end();
          i != e; ++i) {
-      SwitchToTextSection(".section __TEXT,__picsymbolstub1,symbol_stubs,"
+      SwitchToTextSection("\t.section __TEXT,__picsymbolstub1,symbol_stubs,"
                           "pure_instructions,32");
       EmitAlignment(4);
       O << "L" << *i << "$stub:\n";
@@ -1036,7 +1035,7 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
   } else {
     for (std::set<std::string>::iterator i = FnStubs.begin(), e = FnStubs.end();
          i != e; ++i) {
-      SwitchToTextSection(".section __TEXT,__symbol_stub1,symbol_stubs,"
+      SwitchToTextSection("\t.section __TEXT,__symbol_stub1,symbol_stubs,"
                           "pure_instructions,16");
       EmitAlignment(4);
       O << "L" << *i << "$stub:\n";
index 0cb2fe4573f57cc6c3a98d6856c1805d6ece88fb..e593482c65ac4a0803d851e5eca851ce7866624e 100644 (file)
@@ -53,7 +53,7 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const PPCTargetMachine &TM)
   UsedDirective = "\t.no_dead_strip\t";
   WeakDefDirective = "\t.weak_definition ";
   WeakRefDirective = "\t.weak_reference ";
-  HiddenDirective = "\t.private_extern\t";
+  HiddenDirective = "\t.private_extern ";
   SupportsExceptionHandling = true;
   NeedsIndirectEncoding = true;
   NeedsSet = true;
index da1eb8d2cff12fdc282d7fee95a8956c41a8ba70..8f48162696196418bcd12b443ef7d56df1562af9 100644 (file)
@@ -173,7 +173,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
     if (C->isNullValue() && !I->hasSection()) {
       if (I->hasExternalLinkage()) {
         if (const char *Directive = TAI->getZeroFillDirective()) {
-          O << "\t.globl\t" << name << "\n";
+          O << "\t.globl " << name << "\n";
           O << Directive << "__DATA__, __common, " << name << ", "
             << Size << ", " << Align << "\n";
           continue;
@@ -181,8 +181,9 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
       }
       
       if (!I->isThreadLocal() &&
-          (I->hasInternalLinkage() || I->hasWeakLinkage() ||
-           I->hasLinkOnceLinkage())) {
+          (I->hasInternalLinkage() || 
+           (!Subtarget->isTargetDarwin() && 
+            (I->hasWeakLinkage() || I->hasLinkOnceLinkage())))) {
         if (Size == 0) Size = 1;   // .comm Foo, 0 is undefined, avoid it.
         if (!NoZerosInBSS && TAI->getBSSSection())
           SwitchToDataSection(TAI->getBSSSection(), I);
@@ -218,9 +219,9 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
     case GlobalValue::LinkOnceLinkage:
     case GlobalValue::WeakLinkage:
       if (Subtarget->isTargetDarwin()) {
-        O << "\t.globl\t" << name << "\n"
+        O << "\t.globl " << name << "\n"
           << TAI->getWeakDefDirective() << name << "\n";
-        SwitchToDataSection(".section __DATA,__const_coal,coalesced", I);
+        SwitchToDataSection("\t.section __DATA,__datacoal_nt,coalesced", I);
       } else if (Subtarget->isTargetCygMing()) {
         std::string SectionName(".section\t.data$linkonce." +
                                 name +
@@ -244,7 +245,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
       // their name or something.  For now, just emit them as external.
     case GlobalValue::ExternalLinkage:
       // If external or appending, declare as a global symbol
-      O << "\t.globl\t" << name << "\n";
+      O << "\t.globl " << name << "\n";
       // FALL THROUGH
     case GlobalValue::InternalLinkage: {
       if (I->isConstant()) {
@@ -348,7 +349,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
     unsigned j = 1;
     for (std::set<std::string>::iterator i = FnStubs.begin(), e = FnStubs.end();
          i != e; ++i, ++j) {
-      SwitchToDataSection(".section __IMPORT,__jump_table,symbol_stubs,"
+      SwitchToDataSection("\t.section __IMPORT,__jump_table,symbol_stubs,"
                           "self_modifying_code+pure_instructions,5", 0);
       O << "L" << *i << "$stub:\n";
       O << "\t.indirect_symbol " << *i << "\n";
@@ -369,7 +370,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
     // Output stubs for external and common global variables.
     if (!GVStubs.empty())
       SwitchToDataSection(
-                    ".section __IMPORT,__pointers,non_lazy_symbol_pointers");
+                    "\t.section __IMPORT,__pointers,non_lazy_symbol_pointers");
     for (std::set<std::string>::iterator i = GVStubs.begin(), e = GVStubs.end();
          i != e; ++i) {
       O << "L" << *i << "$non_lazy_ptr:\n";
index a872778f00c480137760dbd85e8a3f3185af61f4..bc698ba0969a7f4fe237a4e21911660089804e7f 100644 (file)
@@ -78,7 +78,7 @@ X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) {
     UsedDirective = "\t.no_dead_strip\t";
     WeakDefDirective = "\t.weak_definition ";
     WeakRefDirective = "\t.weak_reference ";
-    HiddenDirective = "\t.private_extern\t";
+    HiddenDirective = "\t.private_extern ";
     
     // In non-PIC modes, emit a special label before jump tables so that the
     // linker can perform more accurate dead code stripping.