diff options
author | Richard Henderson <rth@cygnus.com> | 1998-04-04 05:54:32 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-04-04 05:54:32 -0800 |
commit | 4ed43ff85a14916fd33bdf838f9c40b923e312ab (patch) | |
tree | fccd367314057d62ee9a166712156cd219f140ba /gcc/haifa-sched.c | |
parent | 55a9eb72632155cf329d5307050e5b07087cd8ff (diff) | |
download | gcc-4ed43ff85a14916fd33bdf838f9c40b923e312ab.zip gcc-4ed43ff85a14916fd33bdf838f9c40b923e312ab.tar.gz gcc-4ed43ff85a14916fd33bdf838f9c40b923e312ab.tar.bz2 |
haifa-sched.c (split_block_insns): Don't supress insn splitting on subsequent passes.
* haifa-sched.c (split_block_insns): Don't supress insn splitting
on subsequent passes.
* alpha.c (hard_fp_register_operand): New function.
* alpha.h (PREDICATE_CODES): Add it.
* alpha.md (extendsidi2): Kill bogus f<-f cvtql+cvtlq case. Add an
f<-m case and accompanying define_split.
(trapb): Use a unique unspec_volatile number.
From-SVN: r18992
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r-- | gcc/haifa-sched.c | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index b5f4ace..43e5264 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -8234,8 +8234,7 @@ split_block_insns (b) for (insn = basic_block_head[b];; insn = next) { - rtx prev; - rtx set; + rtx set, last, first, notes; /* Can't use `next_real_insn' because that might go across CODE_LABELS and short-out basic blocks. */ @@ -8272,31 +8271,24 @@ split_block_insns (b) } /* Split insns here to get max fine-grain parallelism. */ - prev = PREV_INSN (insn); - /* It is probably not worthwhile to try to split again in - the second pass. However, if flag_schedule_insns is not set, - the first and only (if any) scheduling pass is after reload. */ - if (reload_completed == 0 || ! flag_schedule_insns) + first = PREV_INSN (insn); + notes = REG_NOTES (insn); + last = try_split (PATTERN (insn), insn, 1); + if (last != insn) { - rtx last, first = PREV_INSN (insn); - rtx notes = REG_NOTES (insn); - last = try_split (PATTERN (insn), insn, 1); - if (last != insn) + /* try_split returns the NOTE that INSN became. */ + first = NEXT_INSN (first); + update_flow_info (notes, first, last, insn); + + PUT_CODE (insn, NOTE); + NOTE_SOURCE_FILE (insn) = 0; + NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; + if (insn == basic_block_head[b]) + basic_block_head[b] = first; + if (insn == basic_block_end[b]) { - /* try_split returns the NOTE that INSN became. */ - first = NEXT_INSN (first); - update_flow_info (notes, first, last, insn); - - PUT_CODE (insn, NOTE); - NOTE_SOURCE_FILE (insn) = 0; - NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; - if (insn == basic_block_head[b]) - basic_block_head[b] = first; - if (insn == basic_block_end[b]) - { - basic_block_end[b] = last; - break; - } + basic_block_end[b] = last; + break; } } |