summaryrefslogtreecommitdiff
path: root/gcc/loop-invariant.c
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2009-10-21 12:03:21 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2009-10-21 12:03:21 +0000
commit6ea7ed3e747841f1484d8fe7539cb0633121b603 (patch)
tree29e2e609b76c6706d6eade266c76dbbd6faa724a /gcc/loop-invariant.c
parenta44fa5565a54d06b65783cf4ecd5594e63c13ce6 (diff)
downloadgcc-6ea7ed3e747841f1484d8fe7539cb0633121b603.tar.gz
2009-10-21 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 153054 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@153056 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/loop-invariant.c')
-rw-r--r--gcc/loop-invariant.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index 7fb6cf05fd4..901ce51ac89 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -705,8 +705,17 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on,
if (def)
{
inv->cost = rtx_cost (set, SET, speed);
+ /* ??? Try to determine cheapness of address computation. Unfortunately
+ the address cost is only a relative measure, we can't really compare
+ it with any absolute number, but only with other address costs.
+ But here we don't have any other addresses, so compare with a magic
+ number anyway. It has to be large enough to not regress PR33928
+ (by avoiding to move reg+8,reg+16,reg+24 invariants), but small
+ enough to not regress 410.bwaves either (by still moving reg+reg
+ invariants).
+ See http://gcc.gnu.org/ml/gcc-patches/2009-10/msg01210.html . */
inv->cheap_address = address_cost (SET_SRC (set), word_mode,
- speed) < COSTS_N_INSNS (1);
+ speed) < 3;
}
else
{
@@ -1785,7 +1794,7 @@ calculate_loop_reg_pressure (void)
FOR_BB_INSNS (bb, insn)
{
- if (! INSN_P (insn))
+ if (! NONDEBUG_INSN_P (insn))
continue;
mark_ref_regs (PATTERN (insn));