In my work on -Wrestrict, to issue meaningful warnings, I found it important to detect both out of bounds array indices as well as offsets in calls to restrict-qualified functions like strcpy. GCC already detects some of these cases but my tests for the enhanced warning exposed a few gaps. The attached patch enhances -Warray-bounds to detect more instances out-of-bounds indices and offsets to member arrays and non-array members. For example, it detects the out-of-bounds offset in the call to strcpy below. The patch is meant to be applied on top posted here but not yet committed: https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01304.html Richard, since this also touches tree-vrp.c I look for your comments. Jeff, this is the enhancement you were interested in when we spoke last week. Thanks Martin $ cat a.c && gcc -O2 -S -Wall a.c struct A { char a[4]; void (*pf)(void); }; void f (struct A *p) { p->a[5] = 'x'; // existing -Warray-bounds strcpy (p->a + 6, "y"); // enhanced -Warray-bounds } a.c: In function ‘f’: a.c:7:3: warning: offset 6 is out of bounds of ‘char[4]’ [-Warray-bounds] strcpy (p->a + 6, "y"); ^~~~~~~~~~~~~~~~~~~~~~ a.c:1:17: note: member declared here struct A { char a[4]; void (*pf)(void); }; ^ a.c:5:7: warning: array subscript 5 is above array bounds of ‘char[4]’ [-Warray-bounds] p->a[5] = 'x'; ~~~~^~~