https://gcc.gnu.org/g:a83725c053df1b8ba0bdc33892cd4b6e19526ce2
commit a83725c053df1b8ba0bdc33892cd4b6e19526ce2 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,
