summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorArtem Belevich <tra@google.com>2015-08-19 20:48:20 +0000
committerArtem Belevich <tra@google.com>2015-08-19 20:48:20 +0000
commit39259ffc65556b2e848ff691f6611f896c0ed6aa (patch)
tree2d1499fac723f833c6a5af56ee1d0a1be90e750d /clang/lib/Sema/SemaDecl.cpp
parent61ede1519cdfb3d390bb268dc0e9ce8dcb277c30 (diff)
downloadbcm5719-llvm-39259ffc65556b2e848ff691f6611f896c0ed6aa.tar.gz
bcm5719-llvm-39259ffc65556b2e848ff691f6611f896c0ed6aa.zip
[CUDA] Add appropriate host/device attribute to builtins.
Differential Revision: http://reviews.llvm.org/D12122 llvm-svn: 245496
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index a8d1e1203e4..d79d60c9773 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -11187,6 +11187,17 @@ void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) {
FD->addAttr(NoThrowAttr::CreateImplicit(Context, FD->getLocation()));
if (Context.BuiltinInfo.isConst(BuiltinID) && !FD->hasAttr<ConstAttr>())
FD->addAttr(ConstAttr::CreateImplicit(Context, FD->getLocation()));
+ if (getLangOpts().CUDA && Context.BuiltinInfo.isTSBuiltin(BuiltinID) &&
+ !FD->hasAttr<CUDADeviceAttr>() && !FD->hasAttr<CUDAHostAttr>()) {
+ // Target-specific builtins are assumed to be intended for use
+ // in this particular CUDA compilation mode and should have
+ // appropriate attribute set so we can enforce CUDA function
+ // call restrictions.
+ if (getLangOpts().CUDAIsDevice)
+ FD->addAttr(CUDADeviceAttr::CreateImplicit(Context, FD->getLocation()));
+ else
+ FD->addAttr(CUDAHostAttr::CreateImplicit(Context, FD->getLocation()));
+ }
}
IdentifierInfo *Name = FD->getIdentifier();
OpenPOWER on IntegriCloud