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; + _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits