aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Compilation.cpp
diff options
context:
space:
mode:
authorJonas Hahnfeld <hahnjo@hahnjo.de>2017-10-04 13:32:59 +0000
committerJonas Hahnfeld <hahnjo@hahnjo.de>2017-10-04 13:32:59 +0000
commitbbf56fb6218b3ec89ffe56ed3bd9766ef1193d03 (patch)
tree61aafcef72db65077d6d4d419873460593dc7ceb /clang/lib/Driver/Compilation.cpp
parentbd5d2f028411ca98ebac844cf0114836b8fc1186 (diff)
downloadllvm-bbf56fb6218b3ec89ffe56ed3bd9766ef1193d03.zip
llvm-bbf56fb6218b3ec89ffe56ed3bd9766ef1193d03.tar.gz
llvm-bbf56fb6218b3ec89ffe56ed3bd9766ef1193d03.tar.bz2
[OpenMP] Fix passing of -m arguments correctly
The recent fix in D38258 was wrong: getAuxTriple() only returns non-null values for the CUDA toolchain. That is why the now added test for PPC and X86 failed. Differential Revision: https://reviews.llvm.org/D38372 llvm-svn: 314902
Diffstat (limited to 'clang/lib/Driver/Compilation.cpp')
-rw-r--r--clang/lib/Driver/Compilation.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Driver/Compilation.cpp b/clang/lib/Driver/Compilation.cpp
index b3991da..a3d8a54 100644
--- a/clang/lib/Driver/Compilation.cpp
+++ b/clang/lib/Driver/Compilation.cpp
@@ -52,9 +52,15 @@ Compilation::getArgsForToolChain(const ToolChain *TC, StringRef BoundArch,
DerivedArgList *&Entry = TCArgs[{TC, BoundArch, DeviceOffloadKind}];
if (!Entry) {
SmallVector<Arg *, 4> AllocatedArgs;
+ DerivedArgList *OpenMPArgs = nullptr;
// Translate OpenMP toolchain arguments provided via the -Xopenmp-target flags.
- DerivedArgList *OpenMPArgs = TC->TranslateOpenMPTargetArgs(
- *TranslatedArgs, DeviceOffloadKind, AllocatedArgs);
+ if (DeviceOffloadKind == Action::OFK_OpenMP) {
+ const ToolChain *HostTC = getSingleOffloadToolChain<Action::OFK_Host>();
+ bool SameTripleAsHost = (TC->getTriple() == HostTC->getTriple());
+ OpenMPArgs = TC->TranslateOpenMPTargetArgs(
+ *TranslatedArgs, SameTripleAsHost, AllocatedArgs);
+ }
+
if (!OpenMPArgs) {
Entry = TC->TranslateArgs(*TranslatedArgs, BoundArch, DeviceOffloadKind);
if (!Entry)