Hi! I've noticed if ((mask & OMP_CLAUSE_WAIT) && !c->wait && gfc_match ("wait") == MATCH_YES) { c->wait = true; match_oacc_expr_list (" (", &c->wait_list, false); continue; } which looks just weird and confusing. Why isn't this instead: if ((mask & OMP_CLAUSE_WAIT) && !c->wait && (match_oacc_expr_list ("wait (", &c->wait_list, false) == MATCH_YES)) { c->wait = true; continue; } ? Otherwise you happily accept wait without following (, perhaps even combined with another clause without any space in between etc.
Jakub