]> granicus.if.org Git - clang/commitdiff
Merging r260370:
authorHans Wennborg <hans@hanshq.net>
Tue, 16 Feb 2016 19:47:16 +0000 (19:47 +0000)
committerHans Wennborg <hans@hanshq.net>
Tue, 16 Feb 2016 19:47:16 +0000 (19:47 +0000)
------------------------------------------------------------------------
r260370 | abataev | 2016-02-10 02:50:12 -0800 (Wed, 10 Feb 2016) | 1 line

Fix PR26543: add a check for definition in CXXRecordDecl.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_38@261002 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaOpenMP.cpp
test/OpenMP/parallel_messages.cpp

index f66e2181b28faee482a67980f4b40bbddd4c7a28..866461782f6bff0533811f40f97fda25e7f7c093 100644 (file)
@@ -634,7 +634,8 @@ DSAStackTy::DSAVarData DSAStackTy::getTopDSA(VarDecl *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),
index 8aee8414f0340728b0ac26fbfc300ae4d2c1cad9..4db55a019549c063d47595f6ff84e34afb2d1b69 100644 (file)
@@ -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}}