aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/omp-expand.c3
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr97862.c15
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c
index b731fd6..c0e94e5 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 0000000..21aad3f
--- /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)
+ ;
+}