From 1cb75460b6e430df6aef9530489d3b4a1e41d139 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 13 Jan 2010 04:55:33 +0000 Subject: [PATCH] change makeNameProper to take a stringref instead of std::string. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93295 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/Mangler.h | 3 ++- lib/VMCore/Mangler.cpp | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/include/llvm/Support/Mangler.h b/include/llvm/Support/Mangler.h index 03c564897bb..9b885d05497 100644 --- a/include/llvm/Support/Mangler.h +++ b/include/llvm/Support/Mangler.h @@ -19,6 +19,7 @@ #include namespace llvm { +class StringRef; class Type; class Module; class Value; @@ -111,7 +112,7 @@ public: /// does this for you, so there's no point calling it on the result /// from getValueName. /// - std::string makeNameProper(const std::string &x, + std::string makeNameProper(StringRef x, ManglerPrefixTy PrefixTy = Mangler::Default); /// getNameWithPrefix - Fill OutName with the name of the appropriate prefix diff --git a/lib/VMCore/Mangler.cpp b/lib/VMCore/Mangler.cpp index 33eb0449e82..2f546b11e46 100644 --- a/lib/VMCore/Mangler.cpp +++ b/lib/VMCore/Mangler.cpp @@ -32,7 +32,7 @@ static std::string MangleLetter(unsigned char C) { /// makeNameProper - We don't want identifier names non-C-identifier characters /// in them, so mangle them as appropriate. /// -std::string Mangler::makeNameProper(const std::string &X, +std::string Mangler::makeNameProper(StringRef X, ManglerPrefixTy PrefixTy) { assert(!X.empty() && "Cannot mangle empty strings"); @@ -41,7 +41,7 @@ std::string Mangler::makeNameProper(const std::string &X, // If X does not start with (char)1, add the prefix. bool NeedPrefix = true; - std::string::const_iterator I = X.begin(); + StringRef::iterator I = X.begin(); if (*I == 1) { NeedPrefix = false; ++I; // Skip over the marker. @@ -52,7 +52,7 @@ std::string Mangler::makeNameProper(const std::string &X, if (!SymbolsCanStartWithDigit && *I >= '0' && *I <= '9') Result += MangleLetter(*I++); - for (std::string::const_iterator E = X.end(); I != E; ++I) { + for (StringRef::iterator E = X.end(); I != E; ++I) { if (!isCharAcceptable(*I)) Result += MangleLetter(*I); else @@ -74,7 +74,7 @@ std::string Mangler::makeNameProper(const std::string &X, bool NeedPrefix = true; bool NeedQuotes = false; std::string Result; - std::string::const_iterator I = X.begin(); + StringRef::iterator I = X.begin(); if (*I == 1) { NeedPrefix = false; ++I; // Skip over the marker. @@ -87,7 +87,7 @@ std::string Mangler::makeNameProper(const std::string &X, // Do an initial scan of the string, checking to see if we need quotes or // to escape a '"' or not. if (!NeedQuotes) - for (std::string::const_iterator E = X.end(); I != E; ++I) + for (StringRef::iterator E = X.end(); I != E; ++I) if (!isCharAcceptable(*I)) { NeedQuotes = true; break; @@ -98,7 +98,7 @@ std::string Mangler::makeNameProper(const std::string &X, if (!NeedPrefix) return X.substr(1); // Strip off the \001. - Result = Prefix + X; + Result = Prefix + X.str(); if (PrefixTy == Mangler::Private) Result = PrivatePrefix + Result; @@ -109,10 +109,10 @@ std::string Mangler::makeNameProper(const std::string &X, } if (NeedPrefix) - Result = X.substr(0, I-X.begin()); + Result = X.substr(0, I-X.begin()).str(); // Otherwise, construct the string the expensive way. - for (std::string::const_iterator E = X.end(); I != E; ++I) { + for (StringRef::iterator E = X.end(); I != E; ++I) { if (*I == '"') Result += "_QQ_"; else if (*I == '\n')