]> granicus.if.org Git - clang/commitdiff
Revert "Reapply: [Driver] Use forward slashes in most linker arguments"
authorMartin Storsjo <martin@martin.st>
Fri, 26 Oct 2018 08:33:29 +0000 (08:33 +0000)
committerMartin Storsjo <martin@martin.st>
Fri, 26 Oct 2018 08:33:29 +0000 (08:33 +0000)
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

include/clang/Driver/ToolChain.h
lib/Driver/Driver.cpp
lib/Driver/ToolChain.cpp
lib/Driver/ToolChains/Clang.cpp
lib/Driver/ToolChains/CommonArgs.cpp
lib/Driver/ToolChains/Gnu.cpp

index bc791801b711696a9aecabfef60ec3ca6c7bcaac..bc61bc66b72f17987b66f7f56b0b0e47073ad175 100644 (file)
@@ -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;
index 45e93a3661ed035611b8f1f714f2d769c96700d7..453758196cf40119f824979f4fd71c0b64304120 100644 (file)
@@ -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.
index 880a2ec250a89dae931a72717eb8a082c8dbb979..1667536c567efddeb48827883bddd1c0af5a4a30 100644 (file)
@@ -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,
index 67c94da8f3afd7fed42a1bc1600639954b82572a..a8ddd8adc328aae940f1dfde9591469327ac0357 100644 (file)
@@ -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));
index 0278074334d43bad71f5cd2f3edb435c3d8ba12a..171d1aebdb47cd9f9c8fd0e8763eebe346ae8f6b 100644 (file)
@@ -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;
     }
 
index 514632bd1b825354ec664139f860a97e6cf415e3..d91808db34c9f3056495469b16a5115c0b568ea6 100644 (file)
@@ -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()) {