[llvm-commits] [llvm] r58343 - /llvm/trunk/lib/VMCore/AsmWriter.cpp

Daniel Dunbar daniel at zuster.org
Tue Oct 28 12:33:03 PDT 2008


Author: ddunbar
Date: Tue Oct 28 14:33:02 2008
New Revision: 58343

URL: http://llvm.org/viewvc/llvm-project?rev=58343&view=rev
Log:
Reuse PrintEscapedString for printing names in .ll
 - One functionality change, '\\' in a name is now printed as a hex
   escape instead of "\\\\". This is consistent with other users of
   PrintEscapedString.

Modified:
    llvm/trunk/lib/VMCore/AsmWriter.cpp

Modified: llvm/trunk/lib/VMCore/AsmWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AsmWriter.cpp?rev=58343&r1=58342&r2=58343&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/AsmWriter.cpp (original)
+++ llvm/trunk/lib/VMCore/AsmWriter.cpp Tue Oct 28 14:33:02 2008
@@ -60,6 +60,25 @@
   return 0;
 }
 
+// PrintEscapedString - Print each character of the specified string, escaping
+// it if it is not printable or if it is an escape char.
+static void PrintEscapedString(const char *Str, unsigned Length,
+                               raw_ostream &Out) {
+  for (unsigned i = 0; i != Length; ++i) {
+    unsigned char C = Str[i];
+    if (isprint(C) && C != '\\' && C != '"' && isprint(C))
+      Out << C;
+    else
+      Out << '\\' << hexdigit(C >> 4) << hexdigit(C & 0x0F);
+  }
+}
+
+// PrintEscapedString - Print each character of the specified string, escaping
+// it if it is not printable or if it is an escape char.
+static void PrintEscapedString(const std::string &Str, raw_ostream &Out) {
+  PrintEscapedString(Str.c_str(), Str.size(), Out);
+}
+
 enum PrefixType {
   GlobalPrefix,
   LabelPrefix,
@@ -82,7 +101,7 @@
   }      
   
   // Scan the name to see if it needs quotes first.
-  bool NeedsQuotes = NameStr[0] >= '0' && NameStr[0] <= '9';
+  bool NeedsQuotes = isdigit(NameStr[0]);
   if (!NeedsQuotes) {
     for (unsigned i = 0; i != NameLen; ++i) {
       char C = NameStr[i];
@@ -102,18 +121,7 @@
   // Okay, we need quotes.  Output the quotes and escape any scary characters as
   // needed.
   OS << '"';
-  for (unsigned i = 0; i != NameLen; ++i) {
-    char C = NameStr[i];
-    if (C == '\\') {
-      OS << "\\\\";
-    } else if (C != '"' && isprint(C)) {
-      OS << C;
-    } else {
-      OS << '\\';
-      OS << hexdigit((C >> 4) & 0x0F);
-      OS << hexdigit((C >> 0) & 0x0F);
-    }
-  }
+  PrintEscapedString(NameStr, NameLen, OS);
   OS << '"';
 }
 
@@ -579,21 +587,6 @@
   }
 }
 
-// PrintEscapedString - Print each character of the specified string, escaping
-// it if it is not printable or if it is an escape char.
-static void PrintEscapedString(const std::string &Str, raw_ostream &Out) {
-  for (unsigned i = 0, e = Str.size(); i != e; ++i) {
-    unsigned char C = Str[i];
-    if (isprint(C) && C != '"' && C != '\\') {
-      Out << C;
-    } else {
-      Out << '\\'
-          << (char) ((C/16  < 10) ? ( C/16 +'0') : ( C/16 -10+'A'))
-          << (char)(((C&15) < 10) ? ((C&15)+'0') : ((C&15)-10+'A'));
-    }
-  }
-}
-
 static const char *getPredicateText(unsigned predicate) {
   const char * pred = "unknown";
   switch (predicate) {





More information about the llvm-commits mailing list