sanitizer/99673 - bad -Wstringop-overread diagnostic with asan
authorRichard Biener <rguenther@suse.de>
Fri, 21 Jan 2022 12:57:12 +0000 (13:57 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 21 Jan 2022 12:58:35 +0000 (13:58 +0100)
The testcase got fixed by lowering of &MEM[ptr + CST] to ptr + CST.

2022-01-21  Richard Biener  <rguenther@suse.de>

PR sanitizer/99673
* gcc.dg/asan/pr99673.c: New testcase.

gcc/testsuite/gcc.dg/asan/pr99673.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.dg/asan/pr99673.c b/gcc/testsuite/gcc.dg/asan/pr99673.c
new file mode 100644 (file)
index 0000000..05857fd
--- /dev/null
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-Wstringop-overread" } */
+
+struct B {
+  int i;
+  struct A {
+    short sa[8];
+  } a[2];
+};
+
+struct C {
+  char n, ax[];
+};
+
+struct D { int i, j, k; };
+
+int f (const short[8]);
+
+void g (struct C *pc, struct D *pd, int i)
+{
+  struct B *pb = (void *)pc->ax;
+  pd->i = pb->i;
+
+  const short *psa = pb->a[i].sa;
+  if (f (psa))
+    return;
+}