diff options
author | Yaxun Liu <Yaxun.Liu@amd.com> | 2018-04-20 17:01:03 +0000 |
---|---|---|
committer | Yaxun Liu <Yaxun.Liu@amd.com> | 2018-04-20 17:01:03 +0000 |
commit | 4306f2086fe838591f2d1fe041ef73b643aa99ee (patch) | |
tree | ddedd75da98d4b292b315f7fdfc818077d9b5f9c /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | e268304122d827396979c61251f2862148ad01c8 (diff) | |
download | bcm5719-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.cpp | 3 |
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); |