summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2016-02-10 10:50:12 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2016-02-10 10:50:12 +0000
commit4bcad7f236dd9505543e77845cec6056fcec4efc (patch)
tree55b925f042990166ceac0719e9b058e03ba1cbf5
parented844cbc0f5b9391314edb7d34ea71a060b0faa2 (diff)
downloadbcm5719-llvm-4bcad7f236dd9505543e77845cec6056fcec4efc.tar.gz
bcm5719-llvm-4bcad7f236dd9505543e77845cec6056fcec4efc.zip
Fix PR26543: add a check for definition in CXXRecordDecl.
llvm-svn: 260370
-rw-r--r--clang/lib/Sema/SemaOpenMP.cpp3
-rw-r--r--clang/test/OpenMP/parallel_messages.cpp5
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 3ba5daa0304..9f4daeeffe9 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -669,7 +669,8 @@ DSAStackTy::DSAVarData DSAStackTy::getTopDSA(ValueDecl *D, bool FromParent) {
if (auto *CTD = CTSD->getSpecializedTemplate())
RD = CTD->getTemplatedDecl();
if (IsConstant &&
- !(SemaRef.getLangOpts().CPlusPlus && RD && RD->hasMutableFields())) {
+ !(SemaRef.getLangOpts().CPlusPlus && RD && RD->hasDefinition() &&
+ RD->hasMutableFields())) {
// Variables with const-qualified type having no mutable member may be
// listed in a firstprivate clause, even if they are static data members.
DSAVarData DVarTemp = hasDSA(D, MatchesAnyClause(OMPC_firstprivate),
diff --git a/clang/test/OpenMP/parallel_messages.cpp b/clang/test/OpenMP/parallel_messages.cpp
index 8aee8414f03..4db55a01954 100644
--- a/clang/test/OpenMP/parallel_messages.cpp
+++ b/clang/test/OpenMP/parallel_messages.cpp
@@ -5,7 +5,12 @@ void foo() {
#pragma omp parallel // expected-error {{unexpected OpenMP directive '#pragma omp parallel'}}
+struct S;
+S& bar();
int main(int argc, char **argv) {
+ S &s = bar();
+ #pragma omp parallel
+ (void)&s;
#pragma omp parallel { // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
foo();
#pragma omp parallel ( // expected-warning {{extra tokens at the end of '#pragma omp parallel' are ignored}}
OpenPOWER on IntegriCloud