diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2008-10-28 19:33:02 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2008-10-28 19:33:02 +0000 |
| commit | db0b70a937cf120ac78424d155352647c47be581 (patch) | |
| tree | 5a3b7e8a4b80ca123c74370468c413762ac01223 /llvm/lib/VMCore | |
| parent | d745976d367e7ea5b920807912628440b226c491 (diff) | |
| download | bcm5719-llvm-db0b70a937cf120ac78424d155352647c47be581.tar.gz bcm5719-llvm-db0b70a937cf120ac78424d155352647c47be581.zip | |
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.
llvm-svn: 58343
Diffstat (limited to 'llvm/lib/VMCore')
| -rw-r--r-- | llvm/lib/VMCore/AsmWriter.cpp | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/llvm/lib/VMCore/AsmWriter.cpp b/llvm/lib/VMCore/AsmWriter.cpp index 55ba300bda9..34e9716f687 100644 --- a/llvm/lib/VMCore/AsmWriter.cpp +++ b/llvm/lib/VMCore/AsmWriter.cpp @@ -60,6 +60,25 @@ static const Module *getModuleFromVal(const Value *V) { 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 @@ static void PrintLLVMName(raw_ostream &OS, const char *NameStr, } // 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 @@ static void PrintLLVMName(raw_ostream &OS, const char *NameStr, // 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 @@ void llvm::WriteTypeSymbolic(raw_ostream &Out, const Type *Ty, const Module *M){ } } -// 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) { |

