summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorYaxun Liu <Yaxun.Liu@amd.com>2018-04-20 17:01:03 +0000
committerYaxun Liu <Yaxun.Liu@amd.com>2018-04-20 17:01:03 +0000
commit4306f2086fe838591f2d1fe041ef73b643aa99ee (patch)
treeddedd75da98d4b292b315f7fdfc818077d9b5f9c /clang/lib/CodeGen/CodeGenModule.cpp
parente268304122d827396979c61251f2862148ad01c8 (diff)
downloadbcm5719-llvm-4306f2086fe838591f2d1fe041ef73b643aa99ee.tar.gz
bcm5719-llvm-4306f2086fe838591f2d1fe041ef73b643aa99ee.zip
[CUDA] Set LLVM calling convention for CUDA kernel
Some targets need special LLVM calling convention for CUDA kernel. This patch does that through a TargetCodeGenInfo hook. It only affects amdgcn target. Patch by Greg Rodgers. Revised and lit tests added by Yaxun Liu. Differential Revision: https://reviews.llvm.org/D45223 llvm-svn: 330447
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 707b826418a..063b9be4cd0 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3627,6 +3627,9 @@ void CodeGenModule::EmitGlobalFunctionDefinition(GlobalDecl GD,
MaybeHandleStaticInExternC(D, Fn);
+ if (D->hasAttr<CUDAGlobalAttr>())
+ getTargetCodeGenInfo().setCUDAKernelCallingConvention(Fn);
+
maybeSetTrivialComdat(*D, *Fn);
CodeGenFunction(*this).GenerateCode(D, Fn, FI);
OpenPOWER on IntegriCloud