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