[PATCH] emit error message for clause 'if(1 0)'

Alexander Musman alexander.musman at gmail.com
Thu Feb 20 22:57:13 PST 2014


Hi ABataev, doug.gregor, gribozavr, hfinkel, rengolin, fraggamuffin, cbergstrom,

This is a small fix for clause ‘if’.
E.g.  having clause  'if(1   0)'  should lead to error message.


http://llvm-reviews.chandlerc.com/D2854

Files:
  test/OpenMP/parallel_if_messages.cpp
  lib/Parse/ParseOpenMP.cpp

Index: test/OpenMP/parallel_if_messages.cpp
===================================================================
--- test/OpenMP/parallel_if_messages.cpp
+++ test/OpenMP/parallel_if_messages.cpp
@@ -20,6 +20,7 @@
   #pragma omp parallel if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp parallel' cannot contain more than one 'if' clause}}
   #pragma omp parallel if (S) // expected-error {{'S' does not refer to a value}}
   #pragma omp parallel if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
+  #pragma omp parallel if (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   #pragma omp parallel if(argc)
   foo();
 
@@ -36,6 +37,8 @@
   #pragma omp parallel if (foobool(argc)), if (true) // expected-error {{directive '#pragma omp parallel' cannot contain more than one 'if' clause}}
   #pragma omp parallel if (S1) // expected-error {{'S1' does not refer to a value}}
   #pragma omp parallel if (argv[1]=2) // expected-error {{expected ')'}} expected-note {{to match this '('}}
+  #pragma omp parallel if (argc argc) // expected-error {{expected ')'}} expected-note {{to match this '('}}
+  #pragma omp parallel if (1 0) // expected-error {{expected ')'}} expected-note {{to match this '('}}
   #pragma omp parallel if(if(tmain(argc, argv) // expected-error {{expected expression}} expected-error {{expected ')'}} expected-note {{to match this '('}}
   foo();
 
Index: lib/Parse/ParseOpenMP.cpp
===================================================================
--- lib/Parse/ParseOpenMP.cpp
+++ lib/Parse/ParseOpenMP.cpp
@@ -328,10 +328,6 @@
   ExprResult LHS(ParseCastExpression(false, false, NotTypeCast));
   ExprResult Val(ParseRHSOfBinaryExpression(LHS, prec::Conditional));
 
-  if (Tok.isNot(tok::r_paren) && Tok.isNot(tok::comma) &&
-      Tok.isNot(tok::annot_pragma_openmp_end))
-    ConsumeAnyToken();
-
   // Parse ')'.
   T.consumeClose();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2854.1.patch
Type: text/x-patch
Size: 1952 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140220/1db142c1/attachment.bin>


More information about the cfe-commits mailing list