mirror of
https://github.com/intel/llvm.git
synced 2026-01-18 16:50:51 +08:00
Use Optional<std::string> instead of "" to represent a failure.
llvm-svn: 287456
This commit is contained in:
@@ -186,11 +186,10 @@ Optional<MemoryBufferRef> LinkerDriver::readFile(StringRef Path) {
|
||||
|
||||
// Add a given library by searching it from input search paths.
|
||||
void LinkerDriver::addLibrary(StringRef Name) {
|
||||
std::string Path = searchLibrary(Name);
|
||||
if (Path.empty())
|
||||
error("unable to find library -l" + Name);
|
||||
if (Optional<std::string> Path = searchLibrary(Name))
|
||||
addFile(*Path);
|
||||
else
|
||||
addFile(Path);
|
||||
error("unable to find library -l" + Name);
|
||||
}
|
||||
|
||||
// This function is called on startup. We need this for LTO since
|
||||
|
||||
@@ -72,8 +72,8 @@ std::vector<uint8_t> parseHexstring(StringRef S);
|
||||
|
||||
std::string createResponseFile(const llvm::opt::InputArgList &Args);
|
||||
|
||||
std::string findFromSearchPaths(StringRef Path);
|
||||
std::string searchLibrary(StringRef Path);
|
||||
llvm::Optional<std::string> findFromSearchPaths(StringRef Path);
|
||||
llvm::Optional<std::string> searchLibrary(StringRef Path);
|
||||
|
||||
} // namespace elf
|
||||
} // namespace lld
|
||||
|
||||
@@ -138,24 +138,24 @@ static Optional<std::string> findFile(StringRef Path1, const Twine &Path2) {
|
||||
return None;
|
||||
}
|
||||
|
||||
std::string elf::findFromSearchPaths(StringRef Path) {
|
||||
Optional<std::string> elf::findFromSearchPaths(StringRef Path) {
|
||||
for (StringRef Dir : Config->SearchPaths)
|
||||
if (Optional<std::string> S = findFile(Dir, Path))
|
||||
return *S;
|
||||
return "";
|
||||
return S;
|
||||
return None;
|
||||
}
|
||||
|
||||
// This is for -lfoo. We'll look for libfoo.so or libfoo.a from
|
||||
// search paths.
|
||||
std::string elf::searchLibrary(StringRef Name) {
|
||||
// Searches a given library from input search paths, which are filled
|
||||
// from -L command line switches. Returns a path to an existent library file.
|
||||
Optional<std::string> elf::searchLibrary(StringRef Name) {
|
||||
if (Name.startswith(":"))
|
||||
return findFromSearchPaths(Name.substr(1));
|
||||
for (StringRef Dir : Config->SearchPaths) {
|
||||
if (!Config->Static)
|
||||
if (Optional<std::string> S = findFile(Dir, "lib" + Name + ".so"))
|
||||
return *S;
|
||||
return S;
|
||||
if (Optional<std::string> S = findFile(Dir, "lib" + Name + ".a"))
|
||||
return *S;
|
||||
return S;
|
||||
}
|
||||
return "";
|
||||
return None;
|
||||
}
|
||||
|
||||
@@ -1099,11 +1099,10 @@ void ScriptParser::addFile(StringRef S) {
|
||||
} else if (sys::fs::exists(S)) {
|
||||
Driver->addFile(S);
|
||||
} else {
|
||||
std::string Path = findFromSearchPaths(S);
|
||||
if (Path.empty())
|
||||
setError("unable to find " + S);
|
||||
if (Optional<std::string> Path = findFromSearchPaths(S))
|
||||
Driver->addFile(Saver.save(*Path));
|
||||
else
|
||||
Driver->addFile(Saver.save(Path));
|
||||
setError("unable to find " + S);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user