[llvm-branch-commits] [cfe-branch] r244766 - Merging r244719:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Aug 12 10:01:13 PDT 2015


Author: hans
Date: Wed Aug 12 12:01:12 2015
New Revision: 244766

URL: http://llvm.org/viewvc/llvm-project?rev=244766&view=rev
Log:
Merging r244719:
------------------------------------------------------------------------
r244719 | abataev | 2015-08-12 00:10:54 -0700 (Wed, 12 Aug 2015) | 4 lines

[OPENMP] Fix for http://llvm.org/PR24430: clang hangs on invalid input with openmp directive

Add parsing of openmp directives inside structs/unions in C mode.

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

Modified:
    cfe/branches/release_37/   (props changed)
    cfe/branches/release_37/lib/Parse/ParseDecl.cpp
    cfe/branches/release_37/test/OpenMP/openmp_common.c

Propchange: cfe/branches/release_37/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 12 12:01:12 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,243085,243098,243101,243105,243144,243153,243196,243206,243277,243280,243285,243289,243343,243417,243463,243538,243594,243642-243644,243945-243950,243964
+/cfe/trunk:242244,242285,242293,242297,242313,242382,242422,242499,242574,242600,242660,242662,242667,242678,242766,242854,242905,242973,243018,243048,243085,243098,243101,243105,243144,243153,243196,243206,243277,243280,243285,243289,243343,243417,243463,243538,243594,243642-243644,243945-243950,243964,244719
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_37/lib/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_37/lib/Parse/ParseDecl.cpp?rev=244766&r1=244765&r2=244766&view=diff
==============================================================================
--- cfe/branches/release_37/lib/Parse/ParseDecl.cpp (original)
+++ cfe/branches/release_37/lib/Parse/ParseDecl.cpp Wed Aug 12 12:01:12 2015
@@ -3603,6 +3603,14 @@ void Parser::ParseStructUnionBody(Source
       continue;
     }
 
+    if (Tok.is(tok::annot_pragma_openmp)) {
+      // Result can be ignored, because it must be always empty.
+      auto Res = ParseOpenMPDeclarativeDirective();
+      assert(!Res);
+      // Silence possible warnings.
+      (void)Res;
+      continue;
+    }
     if (!Tok.is(tok::at)) {
       auto CFieldCallback = [&](ParsingFieldDeclarator &FD) {
         // Install the declarator into the current TagDecl.

Modified: cfe/branches/release_37/test/OpenMP/openmp_common.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_37/test/OpenMP/openmp_common.c?rev=244766&r1=244765&r2=244766&view=diff
==============================================================================
--- cfe/branches/release_37/test/OpenMP/openmp_common.c (original)
+++ cfe/branches/release_37/test/OpenMP/openmp_common.c Wed Aug 12 12:01:12 2015
@@ -7,3 +7,8 @@ void foo() {
 #pragma omp // expected-error {{expected an OpenMP directive}}
 #pragma omp unknown_directive // expected-error {{expected an OpenMP directive}}
 }
+
+typedef struct S {
+#pragma omp parallel for private(j) schedule(static) if (tree1->totleaf > 1024) // expected-error {{unexpected OpenMP directive '#pragma omp parallel for'}}
+} St;
+




More information about the llvm-branch-commits mailing list