aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-01-13 09:12:23 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2025-01-13 10:38:47 +0100
commitd3904a3ad9d7b4c8e5e536e5166b89548510fd48 (patch)
tree9af5f6fb02250d29c30eb2b05d4b7139ac4421de
parentc0c47fc89ddcc3b1fbb0e5f3040fc52d93ca0be0 (diff)
downloadgcc-d3904a3ad9d7b4c8e5e536e5166b89548510fd48.zip
gcc-d3904a3ad9d7b4c8e5e536e5166b89548510fd48.tar.gz
gcc-d3904a3ad9d7b4c8e5e536e5166b89548510fd48.tar.bz2
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 <stefansf@linux.ibm.com>
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr117119.c10
-rw-r--r--gcc/tree-data-ref.cc2
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/pr117119.c b/gcc/testsuite/gcc.dg/torture/pr117119.c
new file mode 100644
index 0000000..0ec4ac1
--- /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 26ad053..08c14fe 100644
--- a/gcc/tree-data-ref.cc
+++ b/gcc/tree-data-ref.cc
@@ -4088,7 +4088,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 ();