minor cleanups: only switch sections once before all function stubs, instead of
authorChris Lattner <sabre@nondot.org>
Wed, 15 Jul 2009 00:55:58 +0000 (00:55 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 15 Jul 2009 00:55:58 +0000 (00:55 +0000)
before each one.

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

lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp

index 37f0fdbd4122a1b4cd1af661ecefed6b897bcc12..6715181662ad2316714e70e216be35980f200256 100644 (file)
@@ -366,7 +366,8 @@ void PPCAsmPrinter::printOp(const MachineOperand &MO) {
   case MachineOperand::MO_ExternalSymbol:
     // Computing the address of an external symbol, not calling it.
     if (TM.getRelocationModel() != Reloc::Static) {
-      std::string Name(TAI->getGlobalPrefix()); Name += MO.getSymbolName();
+      std::string Name(TAI->getGlobalPrefix());
+      Name += MO.getSymbolName();
       GVStubs.insert(Name);
       printSuffixedName(Name, "$non_lazy_ptr");
       return;
@@ -381,17 +382,15 @@ void PPCAsmPrinter::printOp(const MachineOperand &MO) {
     // External or weakly linked global variables need non-lazily-resolved stubs
     if (TM.getRelocationModel() != Reloc::Static) {
       if (GV->isDeclaration() || GV->isWeakForLinker()) {
-        if (GV->hasHiddenVisibility()) {
-          if (GV->isDeclaration() || GV->hasCommonLinkage() ||
-              GV->hasAvailableExternallyLinkage()) {
-            HiddenGVStubs.insert(Name);
-            printSuffixedName(Name, "$non_lazy_ptr");
-          } else {
-            O << Name;
-          }
-        } else {
+        if (!GV->hasHiddenVisibility()) {
           GVStubs.insert(Name);
           printSuffixedName(Name, "$non_lazy_ptr");
+        } else if (GV->isDeclaration() || GV->hasCommonLinkage() ||
+                   GV->hasAvailableExternallyLinkage()) {
+          HiddenGVStubs.insert(Name);
+          printSuffixedName(Name, "$non_lazy_ptr");
+        } else {
+          O << Name;
         }
         return;
       }
@@ -962,11 +961,11 @@ bool PPCDarwinAsmPrinter::doFinalization(Module &M) {
   bool isPPC64 = TD->getPointerSizeInBits() == 64;
 
   // Output stubs for dynamically-linked functions
-  if (TM.getRelocationModel() == Reloc::PIC_) {
+  if (TM.getRelocationModel() == Reloc::PIC_ && !FnStubs.empty()) {
+    SwitchToTextSection("\t.section __TEXT,__picsymbolstub1,symbol_stubs,"
+                        "pure_instructions,32");
     for (StringSet<>::iterator i = FnStubs.begin(), e = FnStubs.end();
          i != e; ++i) {
-      SwitchToTextSection("\t.section __TEXT,__picsymbolstub1,symbol_stubs,"
-                          "pure_instructions,32");
       EmitAlignment(4);
       const char *p = i->getKeyData();
       bool hasQuote = p[0]=='\"';
@@ -1017,11 +1016,11 @@ bool PPCDarwinAsmPrinter::doFinalization(Module &M) {
       else
         O << "\t.long dyld_stub_binding_helper\n";
     }
-  } else {
+  } else if (!FnStubs.empty()) {
+    SwitchToTextSection("\t.section __TEXT,__symbol_stub1,symbol_stubs,"
+                        "pure_instructions,16");
     for (StringSet<>::iterator i = FnStubs.begin(), e = FnStubs.end();
          i != e; ++i) {
-      SwitchToTextSection("\t.section __TEXT,__symbol_stub1,symbol_stubs,"
-                          "pure_instructions,16");
       EmitAlignment(4);
       const char *p = i->getKeyData();
       printSuffixedName(p, "$stub");