diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-10-21 12:03:21 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-10-21 12:03:21 +0000 |
commit | 6ea7ed3e747841f1484d8fe7539cb0633121b603 (patch) | |
tree | 29e2e609b76c6706d6eade266c76dbbd6faa724a /gcc/loop-invariant.c | |
parent | a44fa5565a54d06b65783cf4ecd5594e63c13ce6 (diff) | |
download | gcc-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.c | 13 |
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)); |