summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/InitPreprocessor.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-12-03 21:53:36 +0000
committerReid Kleckner <reid@kleckner.net>2014-12-03 21:53:36 +0000
commitbbc017851815da300ce9d6315204a73d68754a1c (patch)
treef111ef9bcd2b50a00395b8fbd7a1c70751c6dcba /clang/lib/Frontend/InitPreprocessor.cpp
parentd34e4d235428e13810d695400e5a14f5b8752c13 (diff)
downloadbcm5719-llvm-bbc017851815da300ce9d6315204a73d68754a1c.tar.gz
bcm5719-llvm-bbc017851815da300ce9d6315204a73d68754a1c.zip
CUDA host device code with two code paths
Summary: Allow CUDA host device functions with two code paths using __CUDA_ARCH__ to differentiate between code path being compiled. For example: __host__ __device__ void host_device_function(void) { #ifdef __CUDA_ARCH__ device_only_function(); #else host_only_function(); #endif } Patch by Jacques Pienaar. Reviewed By: rnk Differential Revision: http://reviews.llvm.org/D6457 llvm-svn: 223271
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
-rw-r--r--clang/lib/Frontend/InitPreprocessor.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index f671a2f66ba..3550ac25159 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -870,6 +870,13 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
Builder.defineMacro("_OPENMP", "201307");
}
+ // CUDA device path compilaton
+ if (LangOpts.CUDAIsDevice) {
+ // The CUDA_ARCH value is set for the GPU target specified in the NVPTX
+ // backend's target defines.
+ Builder.defineMacro("__CUDA_ARCH__");
+ }
+
// Get other target #defines.
TI.getTargetDefines(LangOpts, Builder);
}
OpenPOWER on IntegriCloud