Changes in directory llvm/lib/VMCore:
Mangler.cpp updated: 1.24 -> 1.25 --- Log message: Fix the optimized code handling of user asm strings --- Diffs of the changes: (+15 -8) Mangler.cpp | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-) Index: llvm/lib/VMCore/Mangler.cpp diff -u llvm/lib/VMCore/Mangler.cpp:1.24 llvm/lib/VMCore/Mangler.cpp:1.25 --- llvm/lib/VMCore/Mangler.cpp:1.24 Thu Nov 10 15:47:01 2005 +++ llvm/lib/VMCore/Mangler.cpp Thu Nov 10 17:24:26 2005 @@ -54,13 +54,10 @@ } else { bool NeedsQuotes = false; - // If X does not start with (char)1, add the prefix. std::string::const_iterator I = X.begin(); - if (*I != 1) - Result = Prefix; - else + if (*I == 1) ++I; // Skip over the marker. - + // If the first character is a number, we need quotes. if (*I >= '0' && *I <= '9') NeedsQuotes = true; @@ -75,12 +72,22 @@ } // In the common case, we don't need quotes. Handle this quickly. - if (!NeedsQuotes) - return Result + X; + if (!NeedsQuotes) { + if (*X.begin() != 1) + return Prefix+X; + else + return X.substr(1); + } // Otherwise, construct the string the expensive way. I = X.begin(); - if (*I == 1) ++I; // Skip the marker if present. + + // If X does not start with (char)1, add the prefix. + if (*I != 1) + Result = Prefix; + else + ++I; // Skip the marker if present. + for (std::string::const_iterator E = X.end(); I != E; ++I) { if (*I == '"') Result += "_QQ_"; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits