[llvm-branch-commits] [cfe-branch] r244090 - Merging r243964:

Hans Wennborg hans at hanshq.net
Wed Aug 5 11:38:08 PDT 2015


Author: hans
Date: Wed Aug  5 13:38:07 2015
New Revision: 244090

URL: http://llvm.org/viewvc/llvm-project?rev=244090&view=rev
Log:
Merging r243964:
------------------------------------------------------------------------
r243964 | abataev | 2015-08-04 01:10:48 -0700 (Tue, 04 Aug 2015) | 4 lines

[OPENMP] Fix compiler crash during data-sharing attributes analysis.

If a global variable is marked as private in OpenMP construct and then is used in of the private clauses of the same construct, it might cause compiler crash because of incorrect capturing.

------------------------------------------------------------------------

Modified:
    cfe/branches/release_37/   (props changed)
    cfe/branches/release_37/lib/Sema/SemaOpenMP.cpp
    cfe/branches/release_37/test/OpenMP/simd_linear_messages.cpp

Propchange: cfe/branches/release_37/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug  5 13:38:07 2015
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:242244,242285,242293,242297,242313,242382,242422,242499,242574,242600,242660,242662,242667,242678,242766,242854,242905,242973,243018,243048,243098,243101,243105,243144,243153,243196,243206,243277,243280,243285,243289,243343,243417,243463,243538,243594,243642-243644
+/cfe/trunk:242244,242285,242293,242297,242313,242382,242422,242499,242574,242600,242660,242662,242667,242678,242766,242854,242905,242973,243018,243048,243098,243101,243105,243144,243153,243196,243206,243277,243280,243285,243289,243343,243417,243463,243538,243594,243642-243644,243964
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_37/lib/Sema/SemaOpenMP.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_37/lib/Sema/SemaOpenMP.cpp?rev=244090&r1=244089&r2=244090&view=diff
==============================================================================
--- cfe/branches/release_37/lib/Sema/SemaOpenMP.cpp (original)
+++ cfe/branches/release_37/lib/Sema/SemaOpenMP.cpp Wed Aug  5 13:38:07 2015
@@ -657,7 +657,9 @@ void Sema::InitDataSharingAttributesStac
 bool Sema::IsOpenMPCapturedVar(VarDecl *VD) {
   assert(LangOpts.OpenMP && "OpenMP is not allowed");
   VD = VD->getCanonicalDecl();
-  if (DSAStack->getCurrentDirective() != OMPD_unknown) {
+  if (DSAStack->getCurrentDirective() != OMPD_unknown &&
+      (!DSAStack->isClauseParsingMode() ||
+       DSAStack->getParentDirective() != OMPD_unknown)) {
     if (DSAStack->isLoopControlVariable(VD) ||
         (VD->hasLocalStorage() &&
          isParallelOrTaskRegion(DSAStack->getCurrentDirective())) ||

Modified: cfe/branches/release_37/test/OpenMP/simd_linear_messages.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_37/test/OpenMP/simd_linear_messages.cpp?rev=244090&r1=244089&r2=244090&view=diff
==============================================================================
--- cfe/branches/release_37/test/OpenMP/simd_linear_messages.cpp (original)
+++ cfe/branches/release_37/test/OpenMP/simd_linear_messages.cpp Wed Aug  5 13:38:07 2015
@@ -156,6 +156,7 @@ namespace C {
 using A::x;
 }
 
+int f;
 int main(int argc, char **argv) {
   double darr[100];
   // expected-note at +1 {{in instantiation of function template specialization 'test_template<-4, double, int>' requested here}}
@@ -167,6 +168,8 @@ int main(int argc, char **argv) {
   S5 g(5); // expected-note {{'g' defined here}}
   int i;
   int &j = i; // expected-note {{'j' defined here}}
+  #pragma omp simd linear(f) linear(f) // expected-error {{linear variable cannot be linear}} expected-note {{defined as linear}}
+  for (int k = 0; k < argc; ++k) ++k;
   #pragma omp simd linear // expected-error {{expected '(' after 'linear'}}
   for (int k = 0; k < argc; ++k) ++k;
   #pragma omp simd linear ( // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}




More information about the llvm-branch-commits mailing list