https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119808
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2025-04-14 Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Partition 1: size 24 align 16 bitint.4 bitint.3 This is definitely wrong but it is correct based on the IR: MEM[(unsigned long *)&bitint.4] = 0; MEM[(unsigned long *)&bitint.4 + 8B] = 0; MEM[(unsigned long *)&bitint.4 + 16B] = 0; _100 = MEM[(unsigned long *)&bitint.4]; MEM[(unsigned long *)&bitint.4] = _100; _101 = MEM[(unsigned long *)&bitint.4 + 8B]; MEM[(unsigned long *)&bitint.4 + 8B] = _101; _102 = MEM[(unsigned long *)&bitint.4 + 16B]; _103 = (<unnamed-signed:1>) _102; _104 = (unsigned long) _103; MEM[(unsigned long *)&bitint.4 + 16B] = _104; _94 = MEM[(unsigned long *)&bitint.4]; MEM[(unsigned long *)&bitint.2] = _94; _95 = MEM[(unsigned long *)&bitint.4 + 8B]; MEM[(unsigned long *)&bitint.2 + 8B] = _95; _96 = MEM[(unsigned long *)&bitint.4 + 16B]; _97 = (<unnamed-signed:1>) _96; _98 = (<unnamed-unsigned:1>) _97; _99 = (unsigned long) _98; MEM[(unsigned long *)&bitint.2 + 16B] = _99; bitint.4 ={v} {CLOBBER(eos)}; So the bug is in bitlowering. b_5 = 0; b.0_6 = b_5; b_5 -> bitint.4 b.0_6 -> bitint.4