http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54674



--- Comment #9 from William J. Schmidt <wschmidt at gcc dot gnu.org> 2012-09-24 
20:32:34 UTC ---

To be clear, SLSR doesn't rely on mult costs being greater than int costs -- it

simply trusts that the given costs are accurate and makes decisions based upon

them.



Don't worry about the power-of-two shift cases.  The logic in expmed.c that

SLSR, IVOPTS, and other passes rely on figures out whether a

multiply-by-coefficient can be replaced by a combination of

shifts/adds/subtracts based on the costs of those items versus the cost of a

multiply.  It's just that, as things stand, it will never believe those

replacements are better since a general multiply appears to be so cheap (even a

single shift/add will only be equal to a general multiply).



Probably you will get some overall code gen improvement by just raising the

cost of the general multiply to reflect the average cycles for a multiply of

unknown values.

Reply via email to