diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c index b731fd69b1e..c0e94e5e323 100644 --- a/gcc/omp-expand.c +++ b/gcc/omp-expand.c @@ -2514,7 +2514,8 @@ expand_omp_for_init_vars (struct omp_for_data *fd, gimple_stmt_iterator *gsi, && (TREE_CODE (fd->loop.n2) == INTEGER_CST || fd->first_inner_iterations) && (optab_handler (sqrt_optab, TYPE_MODE (double_type_node)) - != CODE_FOR_nothing)) + != CODE_FOR_nothing) + && !integer_zerop (fd->loop.n2)) { tree outer_n1 = fd->adjn1 ? fd->adjn1 : fd->loops[i - 1].n1; tree itype = TREE_TYPE (fd->loops[i].v); diff --git a/gcc/testsuite/c-c++-common/gomp/pr97862.c b/gcc/testsuite/c-c++-common/gomp/pr97862.c new file mode 100644 index 00000000000..21aad3f5b29 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr97862.c @@ -0,0 +1,15 @@ +/* PR middle-end/97862 */ + +void +foo (void) +{ + int i, j; +#pragma omp for collapse(2) + for (i = 0; i < 1; ++i) + for (j = 0; j < i; ++j) + ; +#pragma omp for collapse(2) + for (i = 0; i < 20; i++) + for (j = 0; j < i - 19; j += 1) + ; +}