https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100321
--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> --- During lower_rec_input_clauses in omp-low.c, the reduction clause is handled: ... case OMP_CLAUSE_REDUCTION: case OMP_CLAUSE_IN_REDUCTION: /* OpenACC reductions are initialized using the GOACC_REDUCTION internal function. */ if (is_gimple_omp_oacc (ctx->stmt)) break; if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c)) ... AFAICT, the problem is that the the SIMT handling code is added only in the !OMP_CLAUSE_REDUCTION_PLACEHOLDER (c) case. For this test-case, the OMP_CLAUSE_REDUCTION_PLACEHOLDER (c) path is taken instead. So, something like this reflects the current state: ... diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 7b122059c6e..a0561800977 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -6005,6 +6005,11 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist, tree placeholder = OMP_CLAUSE_REDUCTION_PLACEHOLDER (c); gimple *tseq; tree ptype = TREE_TYPE (placeholder); + if (sctx.is_simt) + { + sorry ("SIMT not fully implemented"); + abort (); + } if (cond) { x = error_mark_node; ...