From 96b94e610b84988a851214620b0ecd544584bab7 Mon Sep 17 00:00:00 2001 From: Joey Gouly Date: Fri, 3 Jan 2014 14:16:55 +0000 Subject: [OpenCL] Variables in the constant address space must be initialized. llvm-svn: 198417 --- clang/lib/Sema/SemaDecl.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'clang/lib') 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()) -- cgit v1.2.3