diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2020-02-14 20:14:36 +0300 |
---|---|---|
committer | Alexander Monakov <amonakov@ispras.ru> | 2020-02-14 20:22:36 +0300 |
commit | d8305a03b4f0bb081dd9c88917cc8c48def22a80 (patch) | |
tree | cb1eb11e78e31963e2d7e79195a9170a281aa2aa /libgo/go | |
parent | 519a33f954fd71cb8b74053e168e23a1cb00d30b (diff) | |
download | gcc-d8305a03b4f0bb081dd9c88917cc8c48def22a80.zip gcc-d8305a03b4f0bb081dd9c88917cc8c48def22a80.tar.gz gcc-d8305a03b4f0bb081dd9c88917cc8c48def22a80.tar.bz2 |
rtlanal: optimize costly division in rtx_cost
There's a costly signed 64-bit division in rtx_cost on x86 as well as
any other target where UNITS_PER_WORD expands to TARGET_64BIT ? 8 : 4.
It's also evident that rtx_cost does redundant work for a SET.
Obviously the variable named 'factor' rarely exceeds 1, so in the
majority of cases it can be computed with a well-predictable branch
rather than a division.
This patch makes rtx_cost do the division only in case mode is wider
than UNITS_PER_WORD, and also moves a test for a SET up front to avoid
redundancy.
No functional change.
* rtlanal.c (rtx_cost): Handle a SET up front. Avoid division if
the mode is not wider than UNITS_PER_WORD.
Diffstat (limited to 'libgo/go')
0 files changed, 0 insertions, 0 deletions