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

commit r12-11020-gc5e4e7617e6e6453e6b6995fb2e31bfe1dd28fdf
Author: Richard Biener <rguent...@suse.de>
Date:   Mon Jan 13 09:12:23 2025 +0100

    tree-optimization/117119 - ICE with int128 IV in dataref analysis
    
    Here's another fix for a missing check that an IV value fits in a
    HIW.  It's originally from Stefan.
    
            PR tree-optimization/117119
            * tree-data-ref.cc (initialize_matrix_A): Check whether
            an INTEGER_CST fits in HWI, otherwise return chrec_dont_know.
    
            * gcc.dg/torture/pr117119.c: New testcase.
    
    Co-Authored-By: Stefan Schulze Frielinghaus <stefa...@linux.ibm.com>
    (cherry picked from commit d3904a3ad9d7b4c8e5e536e5166b89548510fd48)

Diff:
---
 gcc/testsuite/gcc.dg/torture/pr117119.c | 10 ++++++++++
 gcc/tree-data-ref.cc                    |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/gcc/testsuite/gcc.dg/torture/pr117119.c 
b/gcc/testsuite/gcc.dg/torture/pr117119.c
new file mode 100644
index 000000000000..0ec4ac1b1802
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr117119.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target int128 } */
+
+unsigned __int128 g_728;
+int func_1_l_5011[8];
+void func_1() {
+  for (;; g_728 += 1)
+    func_1_l_5011[g_728] ^= func_1_l_5011[g_728 + 5];
+}
+void main() {}
diff --git a/gcc/tree-data-ref.cc b/gcc/tree-data-ref.cc
index ea55f81a92fc..996f8217e286 100644
--- a/gcc/tree-data-ref.cc
+++ b/gcc/tree-data-ref.cc
@@ -4032,7 +4032,7 @@ initialize_matrix_A (lambda_matrix A, tree chrec, 
unsigned index, int mult)
       }
 
     case INTEGER_CST:
-      return chrec;
+      return cst_and_fits_in_hwi (chrec) ? chrec : chrec_dont_know;
 
     default:
       gcc_unreachable ();

Reply via email to