[Bug tree-optimization/54674] [4.8 Regression] ICE in build2_stat, at tree.c:3835
wschmidt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 24 20:33:00 GMT 2012
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.
More information about the Gcc-bugs
mailing list