Handle \n's in value names for more targets. The asm printers
authorChris Lattner <sabre@nondot.org>
Fri, 15 Feb 2008 19:04:54 +0000 (19:04 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 15 Feb 2008 19:04:54 +0000 (19:04 +0000)
really really really need refactoring :(

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

lib/Target/ARM/ARMAsmPrinter.cpp
lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/X86/X86AsmPrinter.cpp

index 7c69aa192b34f0574765823c370cc18635281035..dacc50d71c949fc3c9fff6b5c65a9483f96a23da 100644 (file)
@@ -807,6 +807,15 @@ bool ARMAsmPrinter::doInitialization(Module &M) {
   return Result;
 }
 
+/// PrintUnmangledNameSafely - Print out the printable characters in the name.
+/// Don't print things like \n or \0.
+static void PrintUnmangledNameSafely(const Value *V, std::ostream &OS) {
+  for (const char *Name = V->getNameStart(), *E = Name+V->getNameLen();
+       Name != E; ++Name)
+    if (isprint(*Name))
+      OS << *Name;
+}
+
 bool ARMAsmPrinter::doFinalization(Module &M) {
   const TargetData *TD = TM.getTargetData();
 
@@ -875,7 +884,9 @@ bool ARMAsmPrinter::doFinalization(Module &M) {
           if (TAI->getCOMMDirectiveTakesAlignment())
             O << "," << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
         }
-        O << "\t\t" << TAI->getCommentString() << " " << I->getName() << "\n";
+        O << "\t\t" << TAI->getCommentString() << " ";
+        PrintUnmangledNameSafely(I, O);
+        O << "\n";
         continue;
       }
     }
@@ -961,8 +972,9 @@ bool ARMAsmPrinter::doFinalization(Module &M) {
     }
 
     EmitAlignment(Align, I);
-    O << name << ":\t\t\t\t" << TAI->getCommentString() << " " << I->getName()
-      << "\n";
+    O << name << ":\t\t\t\t" << TAI->getCommentString() << " ";
+    PrintUnmangledNameSafely(I, O);
+    O << "\n";
     if (TAI->hasDotTypeDotSizeDirective())
       O << "\t.size " << name << ", " << Size << "\n";
     // If the initializer is a extern weak symbol, remember to emit the weak
index 605dc128db4491a9e2d62c35c1b0ca65bbc571f9..acc6570e976d9fa53b60a6c8a35372631b6fc9e2 100644 (file)
@@ -639,6 +639,15 @@ bool LinuxAsmPrinter::doInitialization(Module &M) {
   return Result;
 }
 
+/// PrintUnmangledNameSafely - Print out the printable characters in the name.
+/// Don't print things like \n or \0.
+static void PrintUnmangledNameSafely(const Value *V, std::ostream &OS) {
+  for (const char *Name = V->getNameStart(), *E = Name+V->getNameLen();
+       Name != E; ++Name)
+    if (isprint(*Name))
+      OS << *Name;
+}
+
 bool LinuxAsmPrinter::doFinalization(Module &M) {
   const TargetData *TD = TM.getTargetData();
 
@@ -680,7 +689,9 @@ bool LinuxAsmPrinter::doFinalization(Module &M) {
         SwitchToDataSection("\t.data", I);
         O << ".comm " << name << "," << Size;
       }
-      O << "\t\t" << TAI->getCommentString() << " '" << I->getName() << "'\n";
+      O << "\t\t" << TAI->getCommentString() << " '";
+      PrintUnmangledNameSafely(I, O);
+      O << "'\n";
     } else {
       switch (I->getLinkage()) {
       case GlobalValue::LinkOnceLinkage:
@@ -727,8 +738,9 @@ bool LinuxAsmPrinter::doFinalization(Module &M) {
       }
 
       EmitAlignment(Align, I);
-      O << name << ":\t\t\t\t" << TAI->getCommentString() << " '"
-        << I->getName() << "'\n";
+      O << name << ":\t\t\t\t" << TAI->getCommentString() << " '";
+      PrintUnmangledNameSafely(I, O);
+      O << "'\n";
 
       // If the initializer is a extern weak symbol, remember to emit the weak
       // reference!
@@ -942,7 +954,9 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
         if (Subtarget.isDarwin9())
           O << "," << Align;
       }
-      O << "\t\t" << TAI->getCommentString() << " '" << I->getName() << "'\n";
+      O << "\t\t" << TAI->getCommentString() << " '";
+      PrintUnmangledNameSafely(I, O);
+      O << "'\n";
     } else {
       switch (I->getLinkage()) {
       case GlobalValue::LinkOnceLinkage:
@@ -999,8 +1013,9 @@ bool DarwinAsmPrinter::doFinalization(Module &M) {
       }
 
       EmitAlignment(Align, I);
-      O << name << ":\t\t\t\t" << TAI->getCommentString() << " '"
-        << I->getName() << "'\n";
+      O << name << ":\t\t\t\t" << TAI->getCommentString() << " '";
+      PrintUnmangledNameSafely(I, O);
+      O << "'\n";
 
       // If the initializer is a extern weak symbol, remember to emit the weak
       // reference!
index e23dd0d5870273792dfb042a9bb8ce5d8febd6df..9720100e3707fb7310307e078f92ef270af59c18 100644 (file)
@@ -138,9 +138,9 @@ bool X86SharedAsmPrinter::doInitialization(Module &M) {
   return Result;
 }
 
-/// PrintUnamedNameSafely - Print out the printable characters in the name.
+/// PrintUnmangledNameSafely - Print out the printable characters in the name.
 /// Don't print things like \n or \0.
-static void PrintUnamedNameSafely(const Value *V, std::ostream &OS) {
+static void PrintUnmangledNameSafely(const Value *V, std::ostream &OS) {
   for (const char *Name = V->getNameStart(), *E = Name+V->getNameLen();
        Name != E; ++Name)
     if (isprint(*Name))
@@ -228,7 +228,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
             O << "," << (TAI->getAlignmentIsInBytes() ? (1 << Align) : Align);
         }
         O << "\t\t" << TAI->getCommentString() << " ";
-        PrintUnamedNameSafely(I, O);
+        PrintUnmangledNameSafely(I, O);
         O << "\n";
         continue;
       }
@@ -331,7 +331,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
 
     EmitAlignment(Align, I);
     O << name << ":\t\t\t\t" << TAI->getCommentString() << " ";
-    PrintUnamedNameSafely(I, O);
+    PrintUnmangledNameSafely(I, O);
     O << "\n";
     if (TAI->hasDotTypeDotSizeDirective())
       O << "\t.size\t" << name << ", " << Size << "\n";