[MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked
authorMartin Storsjo <martin@martin.st>
Mon, 25 Sep 2017 19:24:45 +0000 (19:24 +0000)
committerMartin Storsjo <martin@martin.st>
Mon, 25 Sep 2017 19:24:45 +0000 (19:24 +0000)
Differential Revision: https://reviews.llvm.org/D37530

llvm-svn: 314138

clang/lib/Driver/ToolChains/MinGW.cpp
clang/test/Driver/mingw-msvcrt.c [new file with mode: 0644]

index 46e2289..660b0c7 100644 (file)
@@ -82,6 +82,9 @@ void tools::MinGW::Linker::AddLibGCC(const ArgList &Args,
 
   CmdArgs.push_back("-lmoldname");
   CmdArgs.push_back("-lmingwex");
+  for (auto Lib : Args.getAllArgValues(options::OPT_l))
+    if (StringRef(Lib).startswith("msvcr") || Lib == "ucrtbase")
+      return;
   CmdArgs.push_back("-lmsvcrt");
 }
 
diff --git a/clang/test/Driver/mingw-msvcrt.c b/clang/test/Driver/mingw-msvcrt.c
new file mode 100644 (file)
index 0000000..b7c6584
--- /dev/null
@@ -0,0 +1,5 @@
+// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DEFAULT %s
+// RUN: %clang -v -target i686-pc-windows-gnu -lmsvcr120 -### %s 2>&1 | FileCheck -check-prefix=CHECK_MSVCR120 %s
+
+// CHECK_DEFAULT: "-lmingwex" "-lmsvcrt" "-ladvapi32"
+// CHECK_MSVCR120: "-lmingwex" "-ladvapi32"