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-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits