On Tue, Jun 28, 2016 at 02:19:13PM +0200, Thomas Schwinge wrote:
> This also makes it obvious that stuff like:
> 
>     void foo()
>     {
>       if (0)
>     #pragma omp cancellation FOO
>         ;
>     }
> 
> ... currently produces "wrong" ;-) diagnostics:
> 
>     ../omp.c: In function 'foo':
>     ../omp.c:4:9: error: '#pragma omp cancellation point' may only be used in 
> compound statements before '#pragma'
>      #pragma omp cancellation FOO
>              ^~~
> 
> We have in fact not yet parsed "#pragma omp cancellation point".  I
> corrected that.  And the "before '#pragma'" also doesn't make sense in
> that diagnostic message, so I switched that to use error_at instead of
> c_parser_error/cp_parser_error (this remains to be fixed for other cases
> in c_parser_pragma).  And, for one diagnostic, C++ used
> cp_parser_require_pragma_eol instead of cp_parser_skip_to_pragma_eol,
> resulting in spurious "error: expected end of line before [...]"
> diagnostics, also fixed.  And, a few missing "%>" added.  At that point,
> I stopped looking for additional things to fix.  ;-)
> 
> OK for trunk?

This LGTM if you tweak it to apply without the previous patch or with just
a patch for PRAGMA_OMP_DECLARE.

Thanks.

> commit 2e17681659f8f8ec1ce3419c6587e1ee569ee8bc
> Author: Thomas Schwinge <tho...@codesourcery.com>
> Date:   Tue Jun 28 14:16:20 2016 +0200
> 
>     Improve diagnostic messages of "#pragma omp cancel", "#pragma omp 
> cancellation point" parsing
>     
>       gcc/c/
>       * c-parser.c (c_parser_pragma) <PRAGMA_OMP_CANCELLATION>: Move
>       pragma context checking into...
>       (c_parser_omp_cancellation_point): ... here, and improve
>       diagnostic messages.
>       * c-typeck.c (c_finish_omp_cancel)
>       (c_finish_omp_cancellation_point): Improve diagnostic messages.
>       gcc/cp/
>       * parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION>: Move
>       pragma context checking into...
>       (cp_parser_omp_cancellation_point): ... here, and improve
>       diagnostic messages.
>       * semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
>       Improve diagnostic messages.
>       gcc/testsuite/
>       * c-c++-common/gomp/cancel-1.c: Extend.

        Jakub

Reply via email to