aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2022-04-20 11:00:33 +0200
committerJan Hubicka <jh@suse.cz>2022-04-20 11:00:33 +0200
commit0707f4280907c395b543464175411f8155817a9e (patch)
treebd65a6b7a3bf6b1adfeb10fa3e5af69b12e39e89 /gcc/testsuite/gcc.c-torture
parent2a6d372ba96cc0836bfd46579ad78c1ee5a3cf8a (diff)
downloadgcc-0707f4280907c395b543464175411f8155817a9e.zip
gcc-0707f4280907c395b543464175411f8155817a9e.tar.gz
gcc-0707f4280907c395b543464175411f8155817a9e.tar.bz2
Fix overflows in ipa-modref-tree.cc
gcc/ChangeLog: 2022-04-20 Jan Hubicka <hubicka@ucw.cz> PR ipa/103818 * ipa-modref-tree.cc (modref_access_node::closer_pair_p): Use poly_offset_int to avoid overflow. (modref_access_node::update2): likewise. gcc/testsuite/ChangeLog: 2022-04-20 Jan Hubicka <hubicka@ucw.cz> * gcc.c-torture/compile/103818.c: New test.
Diffstat (limited to 'gcc/testsuite/gcc.c-torture')
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/103818.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/103818.c b/gcc/testsuite/gcc.c-torture/compile/103818.c
new file mode 100644
index 0000000..e6cbe78
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/103818.c
@@ -0,0 +1,12 @@
+/* { dg-do compile { target lp64 } } */
+struct A { int b[1]; };
+
+void
+foo (struct A *d)
+{
+ d->b[0] = d->b[-144115188075855873LL] + d->b[11] * d->b[2]
+ + d->b[0] % d->b[1025] + d->b[5];
+ d->b[0] = d->b[144678138029277184LL] + d->b[0] & d->b[-3] * d->b[053]
+ + d->b[7] ^ d->b[-9] + d->b[14] + d->b[9] % d->b[49]
+ + d->b[024] + d->b[82] & d->b[4096];
+}