diff options
author | schwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-18 10:37:14 +0000 |
---|---|---|
committer | schwab <schwab@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-18 10:37:14 +0000 |
commit | d4177981766bb4b631e59a6972a67b89c3d7d0f9 (patch) | |
tree | 7d9cbd498f3d157c295b5573cf648b71a8134c51 /gcc/postreload.c | |
parent | e51f8b8fed37982559c18c2b76f65b753de10347 (diff) | |
download | gcc-d4177981766bb4b631e59a6972a67b89c3d7d0f9.tar.gz |
Use strict_low_part for loading a constant only if it is cheaper
PR rtl-optimization/54555
* postreload.c (move2add_use_add2_insn): Substitute
STRICT_LOW_PART only if it is cheaper.
testsuite/:
PR rtl-optimization/54555
* gcc.target/m68k/pr54555.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211777 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/postreload.c')
-rw-r--r-- | gcc/postreload.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/postreload.c b/gcc/postreload.c index 9d716498be4..89f0c8460e2 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -1805,10 +1805,14 @@ move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn) gen_rtx_STRICT_LOW_PART (VOIDmode, narrow_reg), narrow_src); - changed = validate_change (insn, &PATTERN (insn), - new_set, 0); - if (changed) - break; + get_full_set_rtx_cost (new_set, &newcst); + if (costs_lt_p (&newcst, &oldcst, speed)) + { + changed = validate_change (insn, &PATTERN (insn), + new_set, 0); + if (changed) + break; + } } } } |