------- Comment #1 from dfranke at gcc dot gnu dot org 2010-05-07 17:23 ------- In openmp.c (gfc_match_omp_end_nowait), we match "nowait" and end-of-string. If there's anything but whitespace after the nowait, the match is rejected.
With "nowait" being rejected, parse.c (match_word) rejects the whole matching sequence, { "end sections" "nowait" end-of-string } and returns to the last known locus, here just after the "$omp". 67 if (m != MATCH_YES) 68 { 69 gfc_current_locus = *old_locus; 70 reject_statement (); 71 } If line 69 is removed, one gets: pr43711.f90:8.31: !$omp end sections nowait nowait 1 Error: Unclassifiable OpenMP directive at (1) But everything else is broken ^^ This is not specific for nowait, but for all OpenMP related things that explicitly check for end-of-string. I believe, this is eventually the same as PR32365. -- dfranke at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- GCC build triplet|x86_64-suse-linux | GCC host triplet|x86_64-suse-linux | GCC target triplet|x86_64-suse-linux | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43711