aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2018-10-26 08:33:29 +0000
committerMartin Storsjo <martin@martin.st>2018-10-26 08:33:29 +0000
commit5cdd15159a9a43caabb1f32f8fec497ef66318da (patch)
tree68ba0f4472dd6bd437b3480189beede6f2a229be
parent3c79305630e321df60148995920bc52603635c5c (diff)
Revert "Reapply: [Driver] Use forward slashes in most linker arguments"
This reverts commit r345370, as it uncovered even more issues in tests with partial/inconsistent path normalization: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/13562 http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/886 http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/20994 In particular, these tests seem to have failed: Clang :: CodeGen/thinlto-diagnostic-handler-remarks-with-hotness.ll Clang :: CodeGen/thinlto-multi-module.ll Clang :: Driver/cuda-external-tools.cu Clang :: Driver/cuda-options.cu Clang :: Driver/hip-toolchain-no-rdc.hip Clang :: Driver/hip-toolchain-rdc.hip Clang :: Driver/openmp-offload-gpu.c At least the Driver tests could potentially be fixed by extending the path normalization to even more places, but the issues with the CodeGen tests are still unknown. In addition, a number of other tests seem to have been broken in other clang dependent tools such as clang-tidy and clangd. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@345372 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Driver/ToolChain.h7
-rw-r--r--lib/Driver/Driver.cpp6
-rw-r--r--lib/Driver/ToolChain.cpp19
-rw-r--r--lib/Driver/ToolChains/Clang.cpp18
-rw-r--r--lib/Driver/ToolChains/CommonArgs.cpp2
-rw-r--r--lib/Driver/ToolChains/Gnu.cpp2
6 files changed, 17 insertions, 37 deletions
diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h
index bc791801b7..bc61bc66b7 100644
--- a/include/clang/Driver/ToolChain.h
+++ b/include/clang/Driver/ToolChain.h
@@ -21,7 +21,6 @@
#include "llvm/ADT/Triple.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/Option/Option.h"
-#include "llvm/Support/Path.h"
#include "llvm/Support/VersionTuple.h"
#include "llvm/Target/TargetOptions.h"
#include <cassert>
@@ -371,12 +370,6 @@ public:
StringRef Component,
bool Shared = false) const;
- std::string normalizePath(StringRef Path) const {
- if (!Triple.isOSWindows() || Triple.isOSCygMing())
- return llvm::sys::path::convert_to_slash(Path);
- return Path;
- }
-
// Returns <ResourceDir>/lib/<OSName>/<arch>. This is used by runtimes (such
// as OpenMP) to find arch-specific libraries.
std::string getArchSpecificLibPath() const;
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index 45e93a3661..453758196c 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -1011,12 +1011,6 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
.Default(SaveTempsCwd);
}
- llvm::Triple EffectiveTriple = computeTargetTriple(*this, TargetTriple, Args);
- if (!EffectiveTriple.isOSWindows() || EffectiveTriple.isOSCygMing()) {
- for (auto *Str : {&Dir, &InstalledDir, &SysRoot, &ResourceDir})
- *Str = llvm::sys::path::convert_to_slash(*Str);
- }
-
setLTOMode(Args);
// Process -fembed-bitcode= flags.
diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
index 880a2ec250..1667536c56 100644
--- a/lib/Driver/ToolChain.cpp
+++ b/lib/Driver/ToolChain.cpp
@@ -376,10 +376,9 @@ std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
for (const auto &LibPath : getLibraryPaths()) {
SmallString<128> P(LibPath);
- llvm::sys::path::append(P,
- Prefix + Twine("clang_rt.") + Component + Suffix);
+ llvm::sys::path::append(P, Prefix + Twine("clang_rt.") + Component + Suffix);
if (getVFS().exists(P))
- return normalizePath(P);
+ return P.str();
}
StringRef Arch = getArchNameForCompilerRTLib(*this, Args);
@@ -387,7 +386,7 @@ std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
SmallString<128> Path(getCompilerRTPath());
llvm::sys::path::append(Path, Prefix + Twine("clang_rt.") + Component + "-" +
Arch + Env + Suffix);
- return normalizePath(Path);
+ return Path.str();
}
const char *ToolChain::getCompilerRTArgString(const llvm::opt::ArgList &Args,
@@ -426,7 +425,7 @@ Tool *ToolChain::SelectTool(const JobAction &JA) const {
}
std::string ToolChain::GetFilePath(const char *Name) const {
- return normalizePath(D.GetFilePath(Name, *this));
+ return D.GetFilePath(Name, *this);
}
std::string ToolChain::GetProgramPath(const char *Name) const {
@@ -775,14 +774,12 @@ void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args,
void ToolChain::AddFilePathLibArgs(const ArgList &Args,
ArgStringList &CmdArgs) const {
for (const auto &LibPath : getLibraryPaths())
- if (LibPath.length() > 0)
- CmdArgs.push_back(
- Args.MakeArgString(StringRef("-L") + normalizePath(LibPath)));
+ if(LibPath.length() > 0)
+ CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
for (const auto &LibPath : getFilePaths())
- if (LibPath.length() > 0)
- CmdArgs.push_back(
- Args.MakeArgString(StringRef("-L") + normalizePath(LibPath)));
+ if(LibPath.length() > 0)
+ CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
}
void ToolChain::AddCCKextLibArgs(const ArgList &Args,
diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp
index 67c94da8f3..a8ddd8adc3 100644
--- a/lib/Driver/ToolChains/Clang.cpp
+++ b/lib/Driver/ToolChains/Clang.cpp
@@ -3570,8 +3570,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
for (const auto &II : Inputs) {
addDashXForInput(Args, II, CmdArgs);
if (II.isFilename())
- CmdArgs.push_back(
- Args.MakeArgString(TC.normalizePath(II.getFilename())));
+ CmdArgs.push_back(II.getFilename());
else
II.getInputArg().renderAsInput(Args, CmdArgs);
}
@@ -4964,8 +4963,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// Handled with other dependency code.
} else if (Output.isFilename()) {
CmdArgs.push_back("-o");
- CmdArgs.push_back(
- Args.MakeArgString(TC.normalizePath(Output.getFilename())));
+ CmdArgs.push_back(Output.getFilename());
} else {
assert(Output.isNothing() && "Invalid output.");
}
@@ -4980,8 +4978,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
for (const InputInfo &Input : FrontendInputs) {
if (Input.isFilename())
- CmdArgs.push_back(
- Args.MakeArgString(TC.normalizePath(Input.getFilename())));
+ CmdArgs.push_back(Input.getFilename());
else
Input.getInputArg().renderAsInput(Args, CmdArgs);
}
@@ -5674,10 +5671,9 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
assert(Inputs.size() == 1 && "Unexpected number of inputs.");
const InputInfo &Input = Inputs[0];
- const ToolChain &TC = getToolChain();
- const llvm::Triple &Triple = TC.getEffectiveTriple();
+ const llvm::Triple &Triple = getToolChain().getEffectiveTriple();
const std::string &TripleStr = Triple.getTriple();
- const auto &D = TC.getDriver();
+ const auto &D = getToolChain().getDriver();
// Don't warn about "clang -w -c foo.s"
Args.ClaimAllArgs(options::OPT_w);
@@ -5851,7 +5847,7 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
assert(Output.isFilename() && "Unexpected lipo output.");
CmdArgs.push_back("-o");
- CmdArgs.push_back(Args.MakeArgString(TC.normalizePath(Output.getFilename())));
+ CmdArgs.push_back(Output.getFilename());
const llvm::Triple &T = getToolChain().getTriple();
if (Args.hasArg(options::OPT_gsplit_dwarf) &&
@@ -5861,7 +5857,7 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
}
assert(Input.isFilename() && "Invalid input.");
- CmdArgs.push_back(Args.MakeArgString(TC.normalizePath(Input.getFilename())));
+ CmdArgs.push_back(Input.getFilename());
const char *Exec = getToolChain().getDriver().getClangProgramPath();
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
diff --git a/lib/Driver/ToolChains/CommonArgs.cpp b/lib/Driver/ToolChains/CommonArgs.cpp
index 0278074334..171d1aebdb 100644
--- a/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/lib/Driver/ToolChains/CommonArgs.cpp
@@ -163,7 +163,7 @@ void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs,
// Add filenames immediately.
if (II.isFilename()) {
- CmdArgs.push_back(Args.MakeArgString(TC.normalizePath(II.getFilename())));
+ CmdArgs.push_back(II.getFilename());
continue;
}
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
index 514632bd1b..d91808db34 100644
--- a/lib/Driver/ToolChains/Gnu.cpp
+++ b/lib/Driver/ToolChains/Gnu.cpp
@@ -1699,7 +1699,7 @@ void Generic_GCC::GCCInstallationDetector::init(
if (GCCToolchainDir.back() == '/')
GCCToolchainDir = GCCToolchainDir.drop_back(); // remove the /
- Prefixes.push_back(llvm::sys::path::convert_to_slash(GCCToolchainDir));
+ Prefixes.push_back(GCCToolchainDir);
} else {
// If we have a SysRoot, try that first.
if (!D.SysRoot.empty()) {