https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56547
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- It's fold_plusminus_mult_expr doing this on GENERIC already. I suppose FMA detection might want to consider undoing this. It's also questionable whether transforming a * b + a this way is profitable but I guess the idea is to catch followup opportunities.