Taking StringRef in Driver.h APIs instead of raw pointers (NFC)

llvm-svn: 283417
This commit is contained in:
Mehdi Amini 2016-10-06 05:11:48 +00:00
parent 2d487db031
commit 1201117e60
2 changed files with 43 additions and 46 deletions

View File

@ -223,7 +223,7 @@ private:
// Before executing jobs, sets up response files for commands that need them.
void setUpResponseFiles(Compilation &C, Command &Cmd);
void generatePrefixedToolNames(const char *Tool, const ToolChain &TC,
void generatePrefixedToolNames(StringRef Tool, const ToolChain &TC,
SmallVectorImpl<std::string> &Names) const;
public:
@ -369,7 +369,7 @@ public:
/// directories to search.
//
// FIXME: This should be in CompilationInfo.
std::string GetFilePath(const char *Name, const ToolChain &TC) const;
std::string GetFilePath(StringRef Name, const ToolChain &TC) const;
/// GetProgramPath - Lookup \p Name in the list of program search paths.
///
@ -377,7 +377,7 @@ public:
/// directories to search.
//
// FIXME: This should be in CompilationInfo.
std::string GetProgramPath(const char *Name, const ToolChain &TC) const;
std::string GetProgramPath(StringRef Name, const ToolChain &TC) const;
/// HandleImmediateArgs - Handle any arguments which should be
/// treated before building actions or binding tools.
@ -427,7 +427,7 @@ public:
/// as part of compilation; the file will have the given prefix and suffix.
///
/// GCC goes to extra lengths here to be a bit more robust.
std::string GetTemporaryPath(StringRef Prefix, const char *Suffix) const;
std::string GetTemporaryPath(StringRef Prefix, StringRef Suffix) const;
/// Return the pathname of the pch file in clang-cl mode.
std::string GetClPchPath(Compilation &C, StringRef BaseName) const;
@ -483,9 +483,8 @@ public:
/// \return True if the entire string was parsed (9.2), or all
/// groups were parsed (10.3.5extrastuff). HadExtra is true if all
/// groups were parsed but extra characters remain at the end.
static bool GetReleaseVersion(const char *Str, unsigned &Major,
unsigned &Minor, unsigned &Micro,
bool &HadExtra);
static bool GetReleaseVersion(StringRef Str, unsigned &Major, unsigned &Minor,
unsigned &Micro, bool &HadExtra);
/// Parse digits from a string \p Str and fulfill \p Digits with
/// the parsed numbers. This method assumes that the max number of
@ -493,7 +492,7 @@ public:
///
/// \return True if the entire string was parsed and there are
/// no extra characters remaining at the end.
static bool GetReleaseVersion(const char *Str,
static bool GetReleaseVersion(StringRef Str,
MutableArrayRef<unsigned> Digits);
};

View File

@ -2908,7 +2908,7 @@ const char *Driver::GetNamedOutputPath(Compilation &C, const JobAction &JA,
}
}
std::string Driver::GetFilePath(const char *Name, const ToolChain &TC) const {
std::string Driver::GetFilePath(StringRef Name, const ToolChain &TC) const {
// Respect a limited subset of the '-Bprefix' functionality in GCC by
// attempting to use this prefix when looking for file paths.
for (const std::string &Dir : PrefixDirs) {
@ -2938,16 +2938,16 @@ std::string Driver::GetFilePath(const char *Name, const ToolChain &TC) const {
}
void Driver::generatePrefixedToolNames(
const char *Tool, const ToolChain &TC,
StringRef Tool, const ToolChain &TC,
SmallVectorImpl<std::string> &Names) const {
// FIXME: Needs a better variable than DefaultTargetTriple
Names.emplace_back(DefaultTargetTriple + "-" + Tool);
Names.emplace_back((DefaultTargetTriple + "-" + Tool).str());
Names.emplace_back(Tool);
// Allow the discovery of tools prefixed with LLVM's default target triple.
std::string LLVMDefaultTargetTriple = llvm::sys::getDefaultTargetTriple();
if (LLVMDefaultTargetTriple != DefaultTargetTriple)
Names.emplace_back(LLVMDefaultTargetTriple + "-" + Tool);
Names.emplace_back((LLVMDefaultTargetTriple + "-" + Tool).str());
}
static bool ScanDirForExecutable(SmallString<128> &Dir,
@ -2961,8 +2961,7 @@ static bool ScanDirForExecutable(SmallString<128> &Dir,
return false;
}
std::string Driver::GetProgramPath(const char *Name,
const ToolChain &TC) const {
std::string Driver::GetProgramPath(StringRef Name, const ToolChain &TC) const {
SmallVector<std::string, 2> TargetSpecificExecutables;
generatePrefixedToolNames(Name, TC, TargetSpecificExecutables);
@ -2974,7 +2973,7 @@ std::string Driver::GetProgramPath(const char *Name,
if (ScanDirForExecutable(P, TargetSpecificExecutables))
return P.str();
} else {
SmallString<128> P(PrefixDir + Name);
SmallString<128> P((PrefixDir + Name).str());
if (llvm::sys::fs::can_execute(Twine(P)))
return P.str();
}
@ -2996,8 +2995,7 @@ std::string Driver::GetProgramPath(const char *Name,
return Name;
}
std::string Driver::GetTemporaryPath(StringRef Prefix,
const char *Suffix) const {
std::string Driver::GetTemporaryPath(StringRef Prefix, StringRef Suffix) const {
SmallString<128> Path;
std::error_code EC = llvm::sys::fs::createTemporaryFile(Prefix, Suffix, Path);
if (EC) {
@ -3165,36 +3163,35 @@ bool Driver::ShouldUseClangCompiler(const JobAction &JA) const {
///
/// \return True if the entire string was parsed (9.2), or all groups were
/// parsed (10.3.5extrastuff).
bool Driver::GetReleaseVersion(const char *Str, unsigned &Major,
unsigned &Minor, unsigned &Micro,
bool &HadExtra) {
bool Driver::GetReleaseVersion(StringRef Str, unsigned &Major, unsigned &Minor,
unsigned &Micro, bool &HadExtra) {
HadExtra = false;
Major = Minor = Micro = 0;
if (*Str == '\0')
if (Str.empty())
return false;
char *End;
Major = (unsigned)strtol(Str, &End, 10);
if (*Str != '\0' && *End == '\0')
if (Str.consumeInteger(10, Major))
return false;
if (Str.empty())
return true;
if (*End != '.')
if (Str[0] != '.')
return false;
Str = End + 1;
Minor = (unsigned)strtol(Str, &End, 10);
if (*Str != '\0' && *End == '\0')
return true;
if (*End != '.')
return false;
Str = Str.drop_front(1);
Str = End + 1;
Micro = (unsigned)strtol(Str, &End, 10);
if (*Str != '\0' && *End == '\0')
return true;
if (Str == End)
if (Str.consumeInteger(10, Minor))
return false;
HadExtra = true;
if (Str.empty())
return true;
if (Str[0] != '.')
return false;
Str = Str.drop_front(1);
if (Str.consumeInteger(10, Micro))
return false;
if (!Str.empty())
HadExtra = true;
return true;
}
@ -3204,21 +3201,22 @@ bool Driver::GetReleaseVersion(const char *Str, unsigned &Major,
///
/// \return True if the entire string was parsed and there are
/// no extra characters remaining at the end.
bool Driver::GetReleaseVersion(const char *Str,
bool Driver::GetReleaseVersion(StringRef Str,
MutableArrayRef<unsigned> Digits) {
if (*Str == '\0')
if (Str.empty())
return false;
char *End;
unsigned CurDigit = 0;
while (CurDigit < Digits.size()) {
unsigned Digit = (unsigned)strtol(Str, &End, 10);
Digits[CurDigit] = Digit;
if (*Str != '\0' && *End == '\0')
return true;
if (*End != '.' || Str == End)
unsigned Digit;
if (Str.consumeInteger(10, Digit))
return false;
Str = End + 1;
Digits[CurDigit] = Digit;
if (Str.empty())
return true;
if (Str[0] != '.')
return false;
Str = Str.drop_front(1);
CurDigit++;
}