https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120182
--- Comment #4 from mcccs at gmx dot com --- By comparing S2 = 256 and S2 = 255, the brokenness and the major difference is first outputted by the store-merging pass. <bb 4> [local count: 39764240]: MEM[(struct S *)2654208B].next = 256B; MEM[(char *)2654208B] = 0; MEM[(char *)2654209B] = 0; MEM[(char *)2654210B] = 0; MEM[(char *)2654211B] = 0; is merged into <bb 4> [local count: 39764240]: MEM <unsigned long> [(void *)2654208B] = 256; MEM[(char *)2654209B] = 0; MEM[(char *)2654210B] = 0; MEM[(char *)2654211B] = 0; for S2 = 256 ie invalid optimization when greater than 255