Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-18 Thread Alexey Bataev via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL245414: [OPENMP] Link libomp.lib on Windows (authored by 
ABataev).

Changed prior to commit:
  http://reviews.llvm.org/D11932?vs=32275&id=32502#toc

Repository:
  rL LLVM

http://reviews.llvm.org/D11932

Files:
  cfe/trunk/lib/Driver/Tools.cpp
  cfe/trunk/test/OpenMP/linking.c

Index: cfe/trunk/test/OpenMP/linking.c
===
--- cfe/trunk/test/OpenMP/linking.c
+++ cfe/trunk/test/OpenMP/linking.c
@@ -69,3 +69,21 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: link.exe
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-LINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-LINK-64-SAME: -defaultlib:libomp.lib
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: link.exe
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-ILINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-ILINK-64-SAME: -defaultlib:libiomp5md.lib
+//
Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -8885,6 +8885,27 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
+ TC.getDriver().Dir + "/../lib"));
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {


Index: cfe/trunk/test/OpenMP/linking.c
===
--- cfe/trunk/test/OpenMP/linking.c
+++ cfe/trunk/test/OpenMP/linking.c
@@ -69,3 +69,21 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: link.exe
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-LINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-LINK-64-SAME: -defaultlib:libomp.lib
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: link.exe
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-ILINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-ILINK-64-SAME: -defaultlib:libiomp5md.lib
+//
Index: cfe/trunk/lib/Driver/Tools.cpp
===
--- cfe/trunk/lib/Driver/Tools.cpp
+++ cfe/trunk/lib/Driver/Tools.cpp
@@ -8885,6 +8885,27 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
+ TC.getDriver().Dir + "/../lib"));
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
___
cfe-commits mailing list
cfe

Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-18 Thread Reid Kleckner via cfe-commits
rnk accepted this revision.
rnk added a comment.

lgtm


http://reviews.llvm.org/D11932



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-17 Thread İsmail Dönmez via cfe-commits
ismail accepted this revision.
ismail added a reviewer: ismail.
ismail added a comment.
This revision is now accepted and ready to land.

Great work. Tested fine on Windows. Next step would be mapping /openmp flag to 
-fopenmp but I guess thats for another bug.


http://reviews.llvm.org/D11932



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-17 Thread Alexey Bataev via cfe-commits
ABataev updated this revision to Diff 32275.
ABataev added a comment.

Add path to libomp.lib.


http://reviews.llvm.org/D11932

Files:
  lib/Driver/Tools.cpp
  test/OpenMP/linking.c

Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8884,6 +8884,27 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
+ TC.getDriver().Dir + "/../lib"));
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
Index: test/OpenMP/linking.c
===
--- test/OpenMP/linking.c
+++ test/OpenMP/linking.c
@@ -69,3 +69,21 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: link.exe
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-LINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-LINK-64-SAME: -defaultlib:libomp.lib
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: link.exe
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-ILINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-ILINK-64-SAME: -defaultlib:libiomp5md.lib
+//


Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8884,6 +8884,27 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
+ TC.getDriver().Dir + "/../lib"));
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
Index: test/OpenMP/linking.c
===
--- test/OpenMP/linking.c
+++ test/OpenMP/linking.c
@@ -69,3 +69,21 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: link.exe
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-LINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-LINK-64-SAME: -defaultlib:libomp.lib
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: link.exe
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-ILINK-64-SAME: -libpath:{{.+}}/../lib
+// CHECK-MSVC-ILINK-64-SAME: -defaultlib:libiomp5md.lib
+//
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-15 Thread İsmail Dönmez via cfe-commits
ismail added a comment.

In http://reviews.llvm.org/D11932#225158, @hfinkel wrote:

> What library path should be passed (where did you build the OpenMP runtime 
> library)?


This is a default installation so the lib path is $PATH_TO_CLANG_EXE/../lib 
which in my case is C:\Program Files\LLVM\lib


http://reviews.llvm.org/D11932



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-15 Thread hfin...@anl.gov via cfe-commits
hfinkel added a subscriber: hfinkel.
hfinkel added a comment.

In http://reviews.llvm.org/D11932#222515, @ismail wrote:

> Tests pass but, now when I tried to compile a file with -fopenmp I get:
>
> LINK: fatal error LNK1104: cannot open file 'libomp.lib'
>
> libomp.lib does exist in "C:\Program Files\LLVM\lib" but I guess we need to 
> pass the library path down to linker.


What library path should be passed (where did you build the OpenMP runtime 
library)?


http://reviews.llvm.org/D11932



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-12 Thread İsmail Dönmez via cfe-commits
ismail added a comment.

Tests pass but, now when I tried to compile a file with -fopenmp I get:

LINK: fatal error LNK1104: cannot open file 'libomp.lib'

libomp.lib does exist in "C:\Program Files\LLVM\lib" but I guess we need to 
pass the library path down to linker.


http://reviews.llvm.org/D11932



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-11 Thread Alexey Bataev via cfe-commits
ABataev updated this revision to Diff 31792.
ABataev added a comment.

Test fix


http://reviews.llvm.org/D11932

Files:
  lib/Driver/Tools.cpp
  test/OpenMP/linking.c

Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8878,6 +8878,25 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
Index: test/OpenMP/linking.c
===
--- test/OpenMP/linking.c
+++ test/OpenMP/linking.c
@@ -69,3 +69,19 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: link.exe
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-LINK-64-SAME: -defaultlib:libomp.lib
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: link.exe
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-ILINK-64-SAME: -defaultlib:libiomp5md.lib
+//


Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8878,6 +8878,25 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
Index: test/OpenMP/linking.c
===
--- test/OpenMP/linking.c
+++ test/OpenMP/linking.c
@@ -69,3 +69,19 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: link.exe
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-LINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-LINK-64-SAME: -defaultlib:libomp.lib
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: link.exe
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcomp.lib
+// CHECK-MSVC-ILINK-64-SAME: -nodefaultlib:vcompd.lib
+// CHECK-MSVC-ILINK-64-SAME: -defaultlib:libiomp5md.lib
+//
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-11 Thread İsmail Dönmez via cfe-commits
ismail added a comment.

OpenMP/linking.c fails here with VS2015 (building with 
-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp)

Command 21 Stderr:
C:\cygwin64\home\ismail\src\llvm\tools\clang\test\OpenMP\linking.c:75:24: 
error: expected string not found in input
// CHECK-MSVC-LINK-64: "link.exe"

  ^

:1:1: note: scanning from here
clang version 3.8.0 (http://llvm.org/git/clang 
d7efa4b285d2464f1844b52b220381c64cd64bf6) (http://llvm.org/git/llvm bee32461e9d
466ed85439a026c62cb896b638653)
^
:6:73: note: possible intended match here
 "C:\\Program Files (x86)\\Microsoft Visual Studio 
14.0\\VC\\BIN\\amd64\\link.exe" "-out:C:\\cygwin64\\home\\ismail\\src\\llvm
\\dist\\tools\\clang\\test\\OpenMP\\Output\\linking.c.tmp.o" 
"-defaultlib:libcmt" "-libpath:C:\\Program Files (x86)\\Microsoft
 Visual Studio 14.0\\VC\\lib\\amd64" "-libpath:C:\\Program Files (x86)\\Windows 
Kits\\8.1\\Lib\\winv6.3\\um\\x64" "-nologo" "-
nodefaultlib:vcomp.lib" "-nodefaultlib:vcompd.lib" "-defaultlib:libomp.lib" 
"C:\\cygwin64\\tmp\\linking-19e90e.o"

  ^


http://reviews.llvm.org/D11932



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D11932: [OPENMP] Link libomp.lib on Windows

2015-08-11 Thread Alexey Bataev via cfe-commits
ABataev created this revision.
ABataev added reviewers: chandlerc, rsmith.
ABataev added a subscriber: cfe-commits.

Adds libomp.lib for -fopenmp=libomp and libiomp5md.lib for -fopenmp=libiomp5 on 
Windows

http://reviews.llvm.org/D11932

Files:
  lib/Driver/Tools.cpp
  test/OpenMP/linking.c

Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8878,6 +8878,25 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
Index: test/OpenMP/linking.c
===
--- test/OpenMP/linking.c
+++ test/OpenMP/linking.c
@@ -69,3 +69,15 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: "link.exe"
+// CHECK-MSVC-LINK-64-SAME: "-nodefaultlib:vcomp.lib" 
"-nodefaultlib:vcompd.lib" "-defaultlib:libomp.lib"
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: "link.exe"
+// CHECK-MSVC-ILINK-64-SAME: "-nodefaultlib:vcomp.lib" 
"-nodefaultlib:vcompd.lib" "-defaultlib:libiomp5md.lib"
+//


Index: lib/Driver/Tools.cpp
===
--- lib/Driver/Tools.cpp
+++ lib/Driver/Tools.cpp
@@ -8878,6 +8878,25 @@
 
   Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
 
+  if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
+   options::OPT_fno_openmp, false)) {
+CmdArgs.push_back("-nodefaultlib:vcomp.lib");
+CmdArgs.push_back("-nodefaultlib:vcompd.lib");
+switch (getOpenMPRuntime(getToolChain(), Args)) {
+case OMPRT_OMP:
+  CmdArgs.push_back("-defaultlib:libomp.lib");
+  break;
+case OMPRT_IOMP5:
+  CmdArgs.push_back("-defaultlib:libiomp5md.lib");
+  break;
+case OMPRT_GOMP:
+  break;
+case OMPRT_Unknown:
+  // Already diagnosed.
+  break;
+}
+  }
+
   // Add filenames, libraries, and other linker inputs.
   for (const auto &Input : Inputs) {
 if (Input.isFilename()) {
Index: test/OpenMP/linking.c
===
--- test/OpenMP/linking.c
+++ test/OpenMP/linking.c
@@ -69,3 +69,15 @@
 // CHECK-LD-OVERRIDE-64: "-lgomp" "-lrt" "-lgcc"
 // CHECK-LD-OVERRIDE-64: "-lpthread" "-lc"
 //
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libomp -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-LINK-64 %s
+// CHECK-MSVC-LINK-64: "link.exe"
+// CHECK-MSVC-LINK-64-SAME: "-nodefaultlib:vcomp.lib" "-nodefaultlib:vcompd.lib" "-defaultlib:libomp.lib"
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN: -fopenmp=libiomp5 -target x86_64-msvc-win32 \
+// RUN:   | FileCheck --check-prefix=CHECK-MSVC-ILINK-64 %s
+// CHECK-MSVC-ILINK-64: "link.exe"
+// CHECK-MSVC-ILINK-64-SAME: "-nodefaultlib:vcomp.lib" "-nodefaultlib:vcompd.lib" "-defaultlib:libiomp5md.lib"
+//
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits