mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 13:35:38 +08:00
Use StringRef in StringSaver API (NFC)
llvm-svn: 283290
This commit is contained in:
@@ -43,16 +43,16 @@ namespace {
|
||||
class Executor {
|
||||
public:
|
||||
explicit Executor(StringRef S) : Saver(Alloc), Prog(Saver.save(S)) {}
|
||||
void add(StringRef S) { Args.push_back(Saver.save(S)); }
|
||||
void add(std::string &S) { Args.push_back(Saver.save(S)); }
|
||||
void add(Twine S) { Args.push_back(Saver.save(S)); }
|
||||
void add(const char *S) { Args.push_back(Saver.save(S)); }
|
||||
void add(StringRef S) { Args.push_back(Saver.save(S).data()); }
|
||||
void add(std::string &S) { Args.push_back(Saver.save(S).data()); }
|
||||
void add(Twine S) { Args.push_back(Saver.save(S).data()); }
|
||||
void add(const char *S) { Args.push_back(Saver.save(S).data()); }
|
||||
|
||||
void run() {
|
||||
ErrorOr<std::string> ExeOrErr = llvm::sys::findProgramByName(Prog);
|
||||
if (auto EC = ExeOrErr.getError())
|
||||
fatal(EC, "unable to find " + Prog + " in PATH: ");
|
||||
const char *Exe = Saver.save(*ExeOrErr);
|
||||
const char *Exe = Saver.save(*ExeOrErr).data();
|
||||
Args.insert(Args.begin(), Exe);
|
||||
Args.push_back(nullptr);
|
||||
if (llvm::sys::ExecuteAndWait(Args[0], Args.data()) != 0) {
|
||||
|
||||
@@ -23,10 +23,10 @@ class StringSaver final {
|
||||
|
||||
public:
|
||||
StringSaver(BumpPtrAllocator &Alloc) : Alloc(Alloc) {}
|
||||
const char *save(const char *S) { return save(StringRef(S)); }
|
||||
const char *save(StringRef S);
|
||||
const char *save(const Twine &S) { return save(StringRef(S.str())); }
|
||||
const char *save(std::string &S) { return save(StringRef(S)); }
|
||||
StringRef save(const char *S) { return save(StringRef(S)); }
|
||||
StringRef save(StringRef S);
|
||||
StringRef save(const Twine &S) { return save(StringRef(S.str())); }
|
||||
StringRef save(std::string &S) { return save(StringRef(S)); }
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -726,7 +726,7 @@ void cl::TokenizeGNUCommandLine(StringRef Src, StringSaver &Saver,
|
||||
// End the token if this is whitespace.
|
||||
if (isWhitespace(Src[I])) {
|
||||
if (!Token.empty())
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)));
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)).data());
|
||||
Token.clear();
|
||||
continue;
|
||||
}
|
||||
@@ -737,7 +737,7 @@ void cl::TokenizeGNUCommandLine(StringRef Src, StringSaver &Saver,
|
||||
|
||||
// Append the last token after hitting EOF with no whitespace.
|
||||
if (!Token.empty())
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)));
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)).data());
|
||||
// Mark the end of response files
|
||||
if (MarkEOLs)
|
||||
NewArgv.push_back(nullptr);
|
||||
@@ -818,7 +818,7 @@ void cl::TokenizeWindowsCommandLine(StringRef Src, StringSaver &Saver,
|
||||
if (State == UNQUOTED) {
|
||||
// Whitespace means the end of the token.
|
||||
if (isWhitespace(Src[I])) {
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)));
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)).data());
|
||||
Token.clear();
|
||||
State = INIT;
|
||||
// Mark the end of lines in response files
|
||||
@@ -853,7 +853,7 @@ void cl::TokenizeWindowsCommandLine(StringRef Src, StringSaver &Saver,
|
||||
}
|
||||
// Append the last token after hitting EOF with no whitespace.
|
||||
if (!Token.empty())
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)));
|
||||
NewArgv.push_back(Saver.save(StringRef(Token)).data());
|
||||
// Mark the end of response files
|
||||
if (MarkEOLs)
|
||||
NewArgv.push_back(nullptr);
|
||||
@@ -962,7 +962,7 @@ void cl::ParseEnvironmentOptions(const char *progName, const char *envVar,
|
||||
SmallVector<const char *, 20> newArgv;
|
||||
BumpPtrAllocator A;
|
||||
StringSaver Saver(A);
|
||||
newArgv.push_back(Saver.save(progName));
|
||||
newArgv.push_back(Saver.save(progName).data());
|
||||
|
||||
// Parse the value of the environment variable into a "command line"
|
||||
// and hand it off to ParseCommandLineOptions().
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
const char *StringSaver::save(StringRef S) {
|
||||
StringRef StringSaver::save(StringRef S) {
|
||||
char *P = Alloc.Allocate<char>(S.size() + 1);
|
||||
memcpy(P, S.data(), S.size());
|
||||
P[S.size()] = '\0';
|
||||
return P;
|
||||
return StringRef(P, S.size());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user