forked from OSchip/llvm-project
Simplify now that llvm::sys::current_path checks $PWD.
llvm-svn: 188128
This commit is contained in:
parent
7964ab5a43
commit
c7367ffdab
|
@ -305,10 +305,8 @@ inline FrontendActionFactory *newFrontendActionFactory(
|
||||||
/// Otherwise, the returned path will contain the literal path-concatenation of
|
/// Otherwise, the returned path will contain the literal path-concatenation of
|
||||||
/// the current directory and \c File.
|
/// the current directory and \c File.
|
||||||
///
|
///
|
||||||
/// The difference to llvm::sys::fs::make_absolute is that we prefer
|
/// The difference to llvm::sys::fs::make_absolute is the canonicalization this
|
||||||
/// ::getenv("PWD") if available.
|
/// does by removing "./" and computing native paths.
|
||||||
/// FIXME: Make this functionality available from llvm::sys::fs and delete
|
|
||||||
/// this function.
|
|
||||||
///
|
///
|
||||||
/// \param File Either an absolute or relative path.
|
/// \param File Either an absolute or relative path.
|
||||||
std::string getAbsolutePath(StringRef File);
|
std::string getAbsolutePath(StringRef File);
|
||||||
|
|
|
@ -1780,24 +1780,8 @@ static bool shouldUseLeafFramePointer(const ArgList &Args,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If the PWD environment variable is set, add a CC1 option to specify the
|
/// Add a CC1 option to specify the debug compilation directory.
|
||||||
/// debug compilation directory.
|
|
||||||
static void addDebugCompDirArg(const ArgList &Args, ArgStringList &CmdArgs) {
|
static void addDebugCompDirArg(const ArgList &Args, ArgStringList &CmdArgs) {
|
||||||
const char *pwd = ::getenv("PWD");
|
|
||||||
if (!pwd)
|
|
||||||
return;
|
|
||||||
|
|
||||||
llvm::sys::fs::file_status PWDStatus, DotStatus;
|
|
||||||
if (llvm::sys::path::is_absolute(pwd) &&
|
|
||||||
!llvm::sys::fs::status(pwd, PWDStatus) &&
|
|
||||||
!llvm::sys::fs::status(".", DotStatus) &&
|
|
||||||
PWDStatus.getUniqueID() == DotStatus.getUniqueID()) {
|
|
||||||
CmdArgs.push_back("-fdebug-compilation-dir");
|
|
||||||
CmdArgs.push_back(Args.MakeArgString(pwd));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fall back to using getcwd.
|
|
||||||
SmallString<128> cwd;
|
SmallString<128> cwd;
|
||||||
if (!llvm::sys::fs::current_path(cwd)) {
|
if (!llvm::sys::fs::current_path(cwd)) {
|
||||||
CmdArgs.push_back("-fdebug-compilation-dir");
|
CmdArgs.push_back("-fdebug-compilation-dir");
|
||||||
|
@ -2494,12 +2478,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
CmdArgs.push_back("-coverage-file");
|
CmdArgs.push_back("-coverage-file");
|
||||||
SmallString<128> CoverageFilename(Output.getFilename());
|
SmallString<128> CoverageFilename(Output.getFilename());
|
||||||
if (llvm::sys::path::is_relative(CoverageFilename.str())) {
|
if (llvm::sys::path::is_relative(CoverageFilename.str())) {
|
||||||
if (const char *pwd = ::getenv("PWD")) {
|
SmallString<128> Pwd;
|
||||||
if (llvm::sys::path::is_absolute(pwd)) {
|
if (!llvm::sys::fs::current_path(Pwd)) {
|
||||||
SmallString<128> Pwd(pwd);
|
llvm::sys::path::append(Pwd, CoverageFilename.str());
|
||||||
llvm::sys::path::append(Pwd, CoverageFilename.str());
|
CoverageFilename.swap(Pwd);
|
||||||
CoverageFilename.swap(Pwd);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CmdArgs.push_back(Args.MakeArgString(CoverageFilename));
|
CmdArgs.push_back(Args.MakeArgString(CoverageFilename));
|
||||||
|
|
|
@ -124,23 +124,16 @@ bool runToolOnCodeWithArgs(clang::FrontendAction *ToolAction, const Twine &Code,
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getAbsolutePath(StringRef File) {
|
std::string getAbsolutePath(StringRef File) {
|
||||||
SmallString<1024> BaseDirectory;
|
|
||||||
if (const char *PWD = ::getenv("PWD"))
|
|
||||||
BaseDirectory = PWD;
|
|
||||||
else
|
|
||||||
llvm::sys::fs::current_path(BaseDirectory);
|
|
||||||
SmallString<1024> PathStorage;
|
|
||||||
if (llvm::sys::path::is_absolute(File)) {
|
|
||||||
llvm::sys::path::native(File, PathStorage);
|
|
||||||
return PathStorage.str();
|
|
||||||
}
|
|
||||||
StringRef RelativePath(File);
|
StringRef RelativePath(File);
|
||||||
// FIXME: Should '.\\' be accepted on Win32?
|
// FIXME: Should '.\\' be accepted on Win32?
|
||||||
if (RelativePath.startswith("./")) {
|
if (RelativePath.startswith("./")) {
|
||||||
RelativePath = RelativePath.substr(strlen("./"));
|
RelativePath = RelativePath.substr(strlen("./"));
|
||||||
}
|
}
|
||||||
SmallString<1024> AbsolutePath(BaseDirectory);
|
|
||||||
llvm::sys::path::append(AbsolutePath, RelativePath);
|
SmallString<1024> AbsolutePath = RelativePath;
|
||||||
|
llvm::error_code EC = llvm::sys::fs::make_absolute(AbsolutePath);
|
||||||
|
assert(!EC);
|
||||||
|
SmallString<1024> PathStorage;
|
||||||
llvm::sys::path::native(Twine(AbsolutePath), PathStorage);
|
llvm::sys::path::native(Twine(AbsolutePath), PathStorage);
|
||||||
return PathStorage.str();
|
return PathStorage.str();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,15 @@
|
||||||
// RUN: mkdir -p %t/abc/def/ijk/qwe
|
// RUN: mkdir -p %t/abc/def/ijk/qwe
|
||||||
// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/abc/def/ijk/qwe/test.cpp\",\"file\":\"%t/abc/def/ijk/qwe/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
|
// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/abc/def/ijk/qwe/test.cpp\",\"file\":\"%t/abc/def/ijk/qwe/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
|
||||||
// RUN: cp "%s" "%t/abc/def/ijk/qwe/test.cpp"
|
// RUN: cp "%s" "%t/abc/def/ijk/qwe/test.cpp"
|
||||||
|
// RUN: ln -sf %t/abc/def %t/abc/def2
|
||||||
|
// RUN: cd %t/abc/def2
|
||||||
// RUN: not env PWD="%t/abc/def" clang-check "ijk/qwe/test.cpp" 2>&1 | FileCheck %s
|
// RUN: not env PWD="%t/abc/def" clang-check "ijk/qwe/test.cpp" 2>&1 | FileCheck %s
|
||||||
|
|
||||||
// CHECK: C++ requires
|
// CHECK: C++ requires
|
||||||
|
// CHECK: /abc/def/ijk/qwe/test.cpp
|
||||||
invalid;
|
invalid;
|
||||||
|
|
||||||
// REQUIRES: shell
|
// REQUIRES: shell
|
||||||
// PR15590
|
// PR15590
|
||||||
// XFAIL: win64
|
// XFAIL: win64
|
||||||
|
// XFAIL: mingw
|
||||||
|
|
|
@ -2,12 +2,16 @@
|
||||||
// RUN: mkdir %t
|
// RUN: mkdir %t
|
||||||
// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
|
// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
|
||||||
// RUN: cp "%s" "%t/test.cpp"
|
// RUN: cp "%s" "%t/test.cpp"
|
||||||
// RUN: not env PWD="%t" clang-check -p "%t" "test.cpp" 2>&1|FileCheck %s
|
// RUN: ln -sf %t %t.foobar
|
||||||
|
// RUN: cd %t
|
||||||
|
// RUN: not env PWD="%t.foobar" clang-check -p "%t" "test.cpp" 2>&1|FileCheck %s
|
||||||
// FIXME: Make the above easier.
|
// FIXME: Make the above easier.
|
||||||
|
|
||||||
// CHECK: C++ requires
|
// CHECK: C++ requires
|
||||||
|
// CHECK: .foobar/test.cpp
|
||||||
invalid;
|
invalid;
|
||||||
|
|
||||||
// REQUIRES: shell
|
// REQUIRES: shell
|
||||||
// PR15590
|
// PR15590
|
||||||
// XFAIL: win64
|
// XFAIL: win64
|
||||||
|
// XFAIL: mingw
|
||||||
|
|
Loading…
Reference in New Issue