https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85796

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org
           Keywords|                            |ice-on-invalid-code

--- Comment #2 from kargl at gcc dot gnu.org ---
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c       (revision 280157)
+++ gcc/fortran/resolve.c       (working copy)
@@ -16174,27 +16174,34 @@ traverse_data_list (gfc_data_variable *var, locus
*whe
   end = gfc_copy_expr (var->iter.end);
   step = gfc_copy_expr (var->iter.step);

-  if (!gfc_simplify_expr (start, 1)
-      || start->expr_type != EXPR_CONSTANT)
+  if (!gfc_simplify_expr (start, 1) || start->expr_type != EXPR_CONSTANT)
     {
       gfc_error ("start of implied-do loop at %L could not be "
                 "simplified to a constant value", &start->where);
       retval = false;
       goto cleanup;
     }
-  if (!gfc_simplify_expr (end, 1)
-      || end->expr_type != EXPR_CONSTANT)
+
+  if (!gfc_simplify_expr (end, 1) || end->expr_type != EXPR_CONSTANT)
     {
       gfc_error ("end of implied-do loop at %L could not be "
                 "simplified to a constant value", &start->where);
       retval = false;
       goto cleanup;
     }
-  if (!gfc_simplify_expr (step, 1)
-      || step->expr_type != EXPR_CONSTANT)
+
+  if (!gfc_simplify_expr (step, 1) || step->expr_type != EXPR_CONSTANT)
     {
       gfc_error ("step of implied-do loop at %L could not be "
-                "simplified to a constant value", &start->where);
+                "simplified to a constant value", &step->where);
+      retval = false;
+      goto cleanup;
+    }
+
+  if (mpz_cmp_si (step->value.integer, 0) == 0)
+    {
+      gfc_error ("step of implied-do loop at %L shall not be zero",
+                &step->where);
       retval = false;
       goto cleanup;
     }

Reply via email to