[clang] 872a53e - [WebAssembly] Change the llvm-lto dir to use the LLVM Version

Dan Gohman via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 25 10:30:33 PST 2019


Author: Dan Gohman
Date: 2019-11-25T10:29:51-08:00
New Revision: 872a53ef9489fcfbb48c6f8dd30bd9a9a026934f

URL: https://github.com/llvm/llvm-project/commit/872a53ef9489fcfbb48c6f8dd30bd9a9a026934f
DIFF: https://github.com/llvm/llvm-project/commit/872a53ef9489fcfbb48c6f8dd30bd9a9a026934f.diff

LOG: [WebAssembly] Change the llvm-lto dir to use the LLVM Version

Using the version instead of the VCS revision, which isn't available
when LLVM_APPEND_VC_REV is set. The bitcode format should be
backwards-compatible at least within a minor version, so the version
string should be sufficient.

Differential Revision: https://reviews.llvm.org/D70677

Added: 
    

Modified: 
    clang/lib/Driver/ToolChains/WebAssembly.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChains/WebAssembly.cpp b/clang/lib/Driver/ToolChains/WebAssembly.cpp
index a2a9dff79e52..55b82592c09f 100644
--- a/clang/lib/Driver/ToolChains/WebAssembly.cpp
+++ b/clang/lib/Driver/ToolChains/WebAssembly.cpp
@@ -118,6 +118,14 @@ void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA,
   }
 }
 
+/// Given a base library directory, append path components to form the
+/// LTO directory.
+static std::string AppendLTOLibDir(const std::string &Dir) {
+    // The version allows the path to be keyed to the specific version of
+    // LLVM in used, as the bitcode format is not stable.
+    return Dir + "/llvm-lto/" LLVM_VERSION_STRING;
+}
+
 WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple,
                          const llvm::opt::ArgList &Args)
     : ToolChain(D, Triple, Args) {
@@ -126,26 +134,24 @@ WebAssembly::WebAssembly(const Driver &D, const llvm::Triple &Triple,
 
   getProgramPaths().push_back(getDriver().getInstalledDir());
 
+  auto SysRoot = getDriver().SysRoot;
   if (getTriple().getOS() == llvm::Triple::UnknownOS) {
     // Theoretically an "unknown" OS should mean no standard libraries, however
     // it could also mean that a custom set of libraries is in use, so just add
     // /lib to the search path. Disable multiarch in this case, to discourage
     // paths containing "unknown" from acquiring meanings.
-    getFilePaths().push_back(getDriver().SysRoot + "/lib");
+    getFilePaths().push_back(SysRoot + "/lib");
   } else {
     const std::string MultiarchTriple =
-        getMultiarchTriple(getDriver(), Triple, getDriver().SysRoot);
+        getMultiarchTriple(getDriver(), Triple, SysRoot);
     if (D.isUsingLTO()) {
-      auto LLVMRevision = getLLVMRevision();
-      if (!LLVMRevision.empty()) {
-        // For LTO, enable use of lto-enabled sysroot libraries too, if available.
-        // Note that the directory is keyed to the LLVM revision, as LLVM's
-        // bitcode format is not stable.
-        getFilePaths().push_back(getDriver().SysRoot + "/lib/" + MultiarchTriple +
-                                 "/llvm-lto/" + LLVMRevision);
-      }
+      // For LTO, enable use of lto-enabled sysroot libraries too, if available.
+      // Note that the directory is keyed to the LLVM revision, as LLVM's
+      // bitcode format is not stable.
+      auto Dir = AppendLTOLibDir(SysRoot + "/lib/" + MultiarchTriple);
+      getFilePaths().push_back(Dir);
     }
-    getFilePaths().push_back(getDriver().SysRoot + "/lib/" + MultiarchTriple);
+    getFilePaths().push_back(SysRoot + "/lib/" + MultiarchTriple);
   }
 }
 


        


More information about the cfe-commits mailing list