https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83253
--- Comment #11 from Bill Schmidt <wschmidt at gcc dot gnu.org> --- OK, for the i386 case, this simply comes down to the following. - mult_by_coeff_cost (3, E_SImode, true) returns a cost of 4 - mult_by_coeff_cost (4, E_SImode, true) returns a cost of 8 Garbage in, garbage out. These costs are obviously bad. Either there is something wrong with target costs that is misleading the expmed.c code into producing these silly values, or the choose_mult_variant code has something wrong with it.