https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97027
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2020-10-13 Ever confirmed|0 |1 --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- Whether or not this is diagnosed depends on the form of the IL and that in turn depends on the target. For example, when configured for aarch64-linux, GCC doesn't issue any warnings for the test case in comment #0. When configured for x86_64 it issues the following barrage of warnings (for g1 only). This is behind failures in the gcc.dg/Wstringop-overflow-47.c test reported here: https://gcc.gnu.org/pipermail/gcc-patches/2020-October/556049.html $ gcc -O2 -S pr97027.c pr97027.c: In function ‘g1’: pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 1 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 2 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 3 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 4 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 5 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 6 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 7 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 8 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 9 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 10 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 11 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 12 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 13 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 14 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 15 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 16 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 17 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 18 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 19 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 20 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 21 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 22 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 23 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 24 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 25 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 26 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 27 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 28 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 29 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 30 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 31 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 32 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 33 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 34 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 35 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 36 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 37 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 38 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 39 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 40 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 41 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 42 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 43 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 44 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 45 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 46 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 47 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 48 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 49 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 50 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 51 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 52 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 53 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 54 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 55 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 56 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 57 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 58 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 59 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 60 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 61 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 62 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 63 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^ pr97027.c:36:12: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 36 | *(V64*)p = (V64){ i }; // storing 64 bytes at offset 1 into a one-byte array | ~~~~~~~~~^~~~~~~~~~~~ pr97027.c:33:8: note: at offset 64 to object ‘a’ with size 1 declared here 33 | char a[1]; | ^