aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Compilation.cpp
diff options
context:
space:
mode:
authorGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>2017-08-07 15:39:11 +0000
committerGheorghe-Teodor Bercea <gheorghe-teod.bercea@ibm.com>2017-08-07 15:39:11 +0000
commit47e0cf378c793b00207998a0537c2fd75bd1ec74 (patch)
tree3f667d95b0f1bf3a9a5009c9c8a568374d48cfb2 /clang/lib/Driver/Compilation.cpp
parent02d9945e6f11959887e2eefbbb5a635ff5087dbe (diff)
downloadllvm-47e0cf378c793b00207998a0537c2fd75bd1ec74.zip
llvm-47e0cf378c793b00207998a0537c2fd75bd1ec74.tar.gz
llvm-47e0cf378c793b00207998a0537c2fd75bd1ec74.tar.bz2
[OpenMP] Add flag for specifying the target device architecture for OpenMP device offloading
Summary: OpenMP has the ability to offload target regions to devices which may have different architectures. A new -fopenmp-target-arch flag is introduced to specify the device architecture. In this patch I use the new flag to specify the compute capability of the underlying NVIDIA architecture for the OpenMP offloading CUDA tool chain. Only a host-offloading test is provided since full device offloading capability will only be available when [[ https://reviews.llvm.org/D29654 | D29654 ]] lands. Reviewers: hfinkel, Hahnfeld, carlo.bertolli, caomhin, ABataev Reviewed By: hfinkel Subscribers: guansong, cfe-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D34784 llvm-svn: 310263
Diffstat (limited to 'clang/lib/Driver/Compilation.cpp')
-rw-r--r--clang/lib/Driver/Compilation.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Driver/Compilation.cpp b/clang/lib/Driver/Compilation.cpp
index cf86644..6626662 100644
--- a/clang/lib/Driver/Compilation.cpp
+++ b/clang/lib/Driver/Compilation.cpp
@@ -59,7 +59,12 @@ Compilation::getArgsForToolChain(const ToolChain *TC, StringRef BoundArch,
DerivedArgList *&Entry = TCArgs[{TC, BoundArch, DeviceOffloadKind}];
if (!Entry) {
- Entry = TC->TranslateArgs(*TranslatedArgs, BoundArch, DeviceOffloadKind);
+ // Translate OpenMP toolchain arguments provided via the -Xopenmp-target flags.
+ Entry = TC->TranslateOpenMPTargetArgs(*TranslatedArgs, DeviceOffloadKind);
+ if (!Entry)
+ Entry = TranslatedArgs;
+
+ Entry = TC->TranslateArgs(*Entry, BoundArch, DeviceOffloadKind);
if (!Entry)
Entry = TranslatedArgs;
}