https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80399
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-04-12 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Huh, sth folds (t + 4294967295) * 16 to (t + 268435455) * 16. Certainly "interesting". I suppose we're trying to make constants cheaper but that's sth quite premature in this particular case. Looks like it's iterating extract_muldiv doing t * 16 + 4294967295 * 16 and fold_plusminus_mult_expr undoing it until it arrives at a point where extract_muldiv iteration gives up.