aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/Warray-bounds-38.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/Warray-bounds-38.c')
-rw-r--r--gcc/testsuite/gcc.dg/Warray-bounds-38.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/Warray-bounds-38.c b/gcc/testsuite/gcc.dg/Warray-bounds-38.c
new file mode 100644
index 00000000000..c9aa0eb8175
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Warray-bounds-38.c
@@ -0,0 +1,30 @@
+/* PR middle-end/88273 - bogus warning: 'memcpy' offset [-527, -529]
+ is out of the bounds [0, 16]
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+void *q;
+
+size_t x, y;
+
+inline void f (char *p, int i, size_t j)
+{
+ size_t n = y ? y : j;
+
+ p += x - i;
+
+ __builtin_memcpy (q, p, n); /* { dg-bogus "bounds" } */
+
+ x = n;
+}
+
+void g (void)
+{
+ struct { char a[16]; } s;
+
+ f (q, 0, sizeof s);
+
+ f (s.a, 33 * sizeof s, 1);
+}