https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94715
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- I think GCC is correct in assuming that x * x is positive since overflow with signed arithmetic is undefined. Thus on GIMPLE we elide _1 = x_2(D) * x_2(D); t_3 = (unsigned int) _1; _4 = (long long unsigned int) t_3; to _1 = x_2(D) * x_2(D); _4 = (long long unsigned int) _1;