https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108060
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-12-12 CC| |jason at gcc dot gnu.org Summary|UBsan missed an |UBsan missed an |out-of-bound bug at -O0 |out-of-bound bug at -O0 | |since | |r7-1900-g8a1b7b7fd75a3847 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed. So it started with r7-1900-g8a1b7b7fd75a3847 where the array is accessed before UBSAN check: gcc pr108060.c -fsanitize=undefined -fdump-tree-gimple=/dev/stdout int main () { int D.2422; int D.2423; { b = -32768; b.0_1 = b; _2 = (int) b.0_1; _3 = a[_2]; <--- load happens here c.1_4 = c; _5 = (int) c.1_4; b.2_6 = b; D.2422 = (int) b.2_6; .UBSAN_BOUNDS (0B, D.2422, 7); _7 = _3 | _5; a[D.2422] = _7; } D.2423 = 0; return D.2423; } thus we crashes before the .UBSAN_BOUNDS happens. Before the revision we emitted: { b = -4169; b.0_1 = b; D.2074 = (int) b.0_1; UBSAN_BOUNDS (0B, D.2074, 7); b.1_2 = b; _3 = (int) b.1_2; _4 = a[_3]; _5 = _4 | 1; a[D.2074] = _5; }