On Tue, 2007-05-22 at 02:01 -0500, Chris Lattner wrote: > > Changes in directory llvm/lib/VMCore: > > AsmWriter.cpp updated: 1.284 -> 1.285 > --- > Log message: > > temporarily revert reid's asmwriter patch, it is missing the asmparser piece > that decodes the escape sequences, thus breaking all cases that use them.
I sent you the patch for this yesterday. Reid. > > This fixes test/Assembler/2007-05-21-Escape.ll > > > > --- > Diffs of the changes: (+19 -33) > > AsmWriter.cpp | 52 +++++++++++++++++++--------------------------------- > 1 files changed, 19 insertions(+), 33 deletions(-) > > > Index: llvm/lib/VMCore/AsmWriter.cpp > diff -u llvm/lib/VMCore/AsmWriter.cpp:1.284 > llvm/lib/VMCore/AsmWriter.cpp:1.285 > --- llvm/lib/VMCore/AsmWriter.cpp:1.284 Sat May 19 09:44:42 2007 > +++ llvm/lib/VMCore/AsmWriter.cpp Tue May 22 02:00:50 2007 > @@ -33,7 +33,6 @@ > #include "llvm/Support/MathExtras.h" > #include "llvm/Support/Streams.h" > #include <algorithm> > -#include <cctype> > using namespace llvm; > > namespace llvm { > @@ -179,39 +178,17 @@ > > /// NameNeedsQuotes - Return true if the specified llvm name should be > wrapped > /// with ""'s. > -static std::string QuoteNameIfNeeded(const std::string &Name) { > - std::string result; > - bool needsQuotes = Name[0] >= '0' && Name[0] <= '9'; > - // Scan the name to see if it needs quotes and to replace funky chars with > - // their octal equivalent. > +static bool NameNeedsQuotes(const std::string &Name) { > + if (Name[0] >= '0' && Name[0] <= '9') return true; > + // Scan to see if we have any characters that are not on the "white list" > for (unsigned i = 0, e = Name.size(); i != e; ++i) { > char C = Name[i]; > assert(C != '"' && "Illegal character in LLVM value name!"); > - if (isalnum(C) || C == '-' || C == '.' || C == '_') > - result += C; > - else if (isprint(C)) { > - needsQuotes = true; > - result += C; > - } else { > - needsQuotes = true; > - result += "\\"; > - char hex1 = (C >> 4) & 0x0F; > - if (hex1 < 10) > - result += hex1 + '0'; > - else > - result += hex1 - 10 + 'A'; > - char hex2 = C & 0x0F; > - if (hex2 < 10) > - result += hex2 + '0'; > - else > - result += hex2 - 10 + 'A'; > - } > - } > - if (needsQuotes) { > - result.insert(0,"\""); > - result += '"'; > + if ((C < 'a' || C > 'z') && (C < 'A' || C > 'Z') && (C < '0' || C > '9') > && > + C != '-' && C != '.' && C != '_') > + return true; > } > - return result; > + return false; > } > > enum PrefixType { > @@ -225,11 +202,20 @@ > /// surrounded with ""'s (if it has special chars in it). > static std::string getLLVMName(const std::string &Name, PrefixType Prefix) { > assert(!Name.empty() && "Cannot get empty name!"); > + > + // First character cannot start with a number... > + if (NameNeedsQuotes(Name)) { > + if (Prefix == GlobalPrefix) > + return "@\"" + Name + "\""; > + return "\"" + Name + "\""; > + } > + > + // If we get here, then the identifier is legal to use as a "VarID". > switch (Prefix) { > default: assert(0 && "Bad prefix!"); > - case GlobalPrefix: return '@' + QuoteNameIfNeeded(Name); > - case LabelPrefix: return QuoteNameIfNeeded(Name); > - case LocalPrefix: return '%' + QuoteNameIfNeeded(Name); > + case GlobalPrefix: return '@' + Name; > + case LabelPrefix: return Name; > + case LocalPrefix: return '%' + Name; > } > } > > > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits