https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109557
--- Comment #8 from qinzhao at gcc dot gnu.org ---
with the following slightly modified testing case, the same issue:
#include <stdlib.h>
#include <assert.h>
struct P {
int k;
int x[10];
} *p;
void store(int a, int b)
{
p = (struct P *)malloc (sizeof (struct P));
p->k = a;
p->x[b] = 0;
assert (__builtin_dynamic_object_size (p, 1) == sizeof (struct P));
return;
}
int main()
{
store(7, 7);
assert (__builtin_dynamic_object_size (p, 1) == sizeof (struct P));
free (p);
}
[opc@qinzhao-ol8u3-x86 109557]$ sh t
/home/opc/Install/latest/bin/gcc -O -fsanitize=bounds -fsanitize=object-size
-fstrict-flex-arrays=3 -fdump-tree-all t.c
a.out: t.c:20: main: Assertion `__builtin_dynamic_object_size (p, 1) == sizeof
(struct P)' failed.
t: line 19: 629958 Aborted (core dumped) ./a.out