phosek created this revision.
phosek added a subscriber: cfe-commits.
phosek set the repository for this revision to rL LLVM.

When compiler-rt is being used as a runtime library, Clang would print an 
invalid path when -print_libgcc_file_name option is used. We should print a 
path to compiler-rt builtin library instead.


Repository:
  rL LLVM

https://reviews.llvm.org/D25256

Files:
  lib/Driver/Driver.cpp


Index: lib/Driver/Driver.cpp
===================================================================
--- lib/Driver/Driver.cpp
+++ lib/Driver/Driver.cpp
@@ -994,7 +994,17 @@
   }
 
   if (C.getArgs().hasArg(options::OPT_print_libgcc_file_name)) {
-    llvm::outs() << GetFilePath("libgcc.a", TC) << "\n";
+    ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(C.getArgs());
+    std::string Path;
+    switch (RLT) {
+    case ToolChain::RLT_CompilerRT:
+      Path = TC.getCompilerRT(C.getArgs(), "builtins");
+      break;
+    case ToolChain::RLT_Libgcc:
+      Path = GetFilePath("libgcc.a", TC);
+      break;
+    }
+    llvm::outs() << Path << "\n";
     return false;
   }
 


Index: lib/Driver/Driver.cpp
===================================================================
--- lib/Driver/Driver.cpp
+++ lib/Driver/Driver.cpp
@@ -994,7 +994,17 @@
   }
 
   if (C.getArgs().hasArg(options::OPT_print_libgcc_file_name)) {
-    llvm::outs() << GetFilePath("libgcc.a", TC) << "\n";
+    ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(C.getArgs());
+    std::string Path;
+    switch (RLT) {
+    case ToolChain::RLT_CompilerRT:
+      Path = TC.getCompilerRT(C.getArgs(), "builtins");
+      break;
+    case ToolChain::RLT_Libgcc:
+      Path = GetFilePath("libgcc.a", TC);
+      break;
+    }
+    llvm::outs() << Path << "\n";
     return false;
   }
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to