summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorJoey Gouly <joey.gouly@gmail.com>2014-01-03 14:16:55 +0000
committerJoey Gouly <joey.gouly@gmail.com>2014-01-03 14:16:55 +0000
commit96b94e610b84988a851214620b0ecd544584bab7 (patch)
tree5783eb39369675e1c516ba864a5302e76e40d581 /clang/lib
parent5dff61d322ae0279283fca1f8ec1ee6810a88fd8 (diff)
downloadbcm5719-llvm-96b94e610b84988a851214620b0ecd544584bab7.tar.gz
bcm5719-llvm-96b94e610b84988a851214620b0ecd544584bab7.zip
[OpenCL] Variables in the constant address space must be initialized.
llvm-svn: 198417
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 42e1564fb5c..532aa221770 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -8589,6 +8589,16 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl,
return;
}
+ // OpenCL v1.1 s6.5.3: variables declared in the constant address space must
+ // be initialized.
+ if (!Var->isInvalidDecl() &&
+ Var->getType().getAddressSpace() == LangAS::opencl_constant &&
+ !Var->getInit()) {
+ Diag(Var->getLocation(), diag::err_opencl_constant_no_init);
+ Var->setInvalidDecl();
+ return;
+ }
+
switch (Var->isThisDeclarationADefinition()) {
case VarDecl::Definition:
if (!Var->isStaticDataMember() || !Var->getAnyInitializer())
OpenPOWER on IntegriCloud