https://gcc.gnu.org/g:ed58012c3d680ba9599bee348529077df4595f54

commit ed58012c3d680ba9599bee348529077df4595f54
Author: Mikael Morin <[email protected]>
Date:   Mon Oct 6 15:27:49 2025 +0200

    Correction régression loop_versioning_6.f90

Diff:
---
 gcc/gimple-loop-versioning.cc | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gcc/gimple-loop-versioning.cc b/gcc/gimple-loop-versioning.cc
index a265def81021..fdbbfecb8af8 100644
--- a/gcc/gimple-loop-versioning.cc
+++ b/gcc/gimple-loop-versioning.cc
@@ -1063,8 +1063,12 @@ loop_versioning::analyze_stride (address_info &address,
      - the stride is an SSA name that is invariant in STMT's loop,
        since otherwise versioning isn't possible.  */
   if (term.versioning_value == NULL_TREE)
-    term.versioning_value = build_int_cst (TREE_TYPE (stride),
-                                          address.type_size / term.multiplier);
+    {
+      term.versioning_value = build_int_cst (TREE_TYPE (stride),
+                                            address.type_size / 
term.multiplier);
+      if (integer_zerop (term.versioning_value))
+       term.versioning_value = build_one_cst (TREE_TYPE (stride));
+    }
   unsigned HOST_WIDE_INT access_size = address.max_offset - address.min_offset;
   unsigned HOST_WIDE_INT final_stride;
   if (acceptable_multiplier_p (term.versioning_value, term.multiplier,

Reply via email to