https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116093
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2024-07-25 Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. Before bitlowering we have: ``` _1 = (int) c_8(D); _2 = 5 / b_9(D); _3 = j_10(D) | 3681934325; // Dead _4 = (_BitInt(129)) _3; // Dead _5 = _2; _6 = (unsigned int) _5; ``` Which is correct. After we get: ``` _1 = (int) c_8(D); .DIVMODBITINT (&bitint.2, 129, 0B, 0, &*.LC0, 3, &b, -129); _3 = j_10(D) | 3681934325; MEM[(unsigned long *)&bitint.2] = _3; ``` Which is wrong. _4 is not used ... Mapping SSA_NAMEs to decls: _2 -> bitint.2 _4 -> bitint.2 b_9(D) -> b is definitely wrong. (2)_2 & (4)_4 [map: 0, 1] : Success -> 0 But _2 and _4 are alive at the same time well _4 is not used but it is alive at the same time as _2 ...