[PATCH] D17453: [Driver] Enable --rtlib option for MSVC target

Roman Shirokiy via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 19 08:57:06 PST 2016


roman.shirokiy created this revision.
roman.shirokiy added reviewers: rnk, majnemer, beanz, pcc.
roman.shirokiy added a subscriber: cfe-commits.

This enables "--rtlib compiler-rt" option under MSVC environment.

Related compiler-rt patch: 
http://reviews.llvm.org/D17452








http://reviews.llvm.org/D17453

Files:
  lib/Driver/Tools.cpp
  test/Driver/msvc-compiler-rt.c

Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8766,10 +8766,20 @@
       break;
     }
     break;
-  case ToolChain::RLT_Libgcc:
-    AddLibgcc(TC.getTriple(), D, CmdArgs, Args);
-    break;
-  }
+    case ToolChain::RLT_Libgcc:
+      // Make sure libgcc is not used under MSVC environment by default
+      if (TC.getTriple().isKnownWindowsMSVCEnvironment()) {
+         // Issue error diagnostic if libgcc is explicitly specified 
+         // through command line as --rtlib option argument.
+         if (Args.hasArg(options::OPT_rtlib_EQ)) {
+           TC.getDriver().Diag(diag::err_drv_unsupported_rtlib_for_platform)
+               << Args.getLastArg(options::OPT_rtlib_EQ)->getValue() << "MSVC";
+         }    
+      }
+      else   
+        AddLibgcc(TC.getTriple(), D, CmdArgs, Args);
+      break;
+    }
 }
 
 static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
@@ -9573,6 +9583,12 @@
     }
   }
 
+  // Add compiler-rt lib in case if it was explicitly
+  // specified as an argument for --rtlib option.
+  if (!Args.hasArg(options::OPT_nostdlib)) {
+    AddRunTimeLibs(TC, TC.getDriver(), CmdArgs, Args);
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
     if (Input.isFilename()) {
Index: test/Driver/msvc-compiler-rt.c
===================================================================
--- test/Driver/msvc-compiler-rt.c
+++ test/Driver/msvc-compiler-rt.c
@@ -0,0 +1,5 @@
+// RUN: %clang -target x86_64-pc-windows-msvc --rtlib=compiler-rt -### %s 2>&1 | FileCheck %s -check-prefix MSVC-COMPILER-RT
+// RUN: not %clang %s -target x86_64-pc-windows-msvc --rtlib=libgcc 2>&1 | FileCheck %s -check-prefix CHECK-ERROR
+
+// MSVC-COMPILER-RT: "{{.*}}clang_rt.builtins{{.*}}"
+// CHECK-ERROR: unsupported runtime library 'libgcc' for platform 'MSVC'


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17453.48491.patch
Type: text/x-patch
Size: 1952 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160219/753c85c1/attachment.bin>


More information about the cfe-commits mailing list