aboutsummaryrefslogtreecommitdiff
path: root/gcc/haifa-sched.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-04-04 05:54:32 -0800
committerRichard Henderson <rth@gcc.gnu.org>1998-04-04 05:54:32 -0800
commit4ed43ff85a14916fd33bdf838f9c40b923e312ab (patch)
treefccd367314057d62ee9a166712156cd219f140ba /gcc/haifa-sched.c
parent55a9eb72632155cf329d5307050e5b07087cd8ff (diff)
downloadgcc-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.c42
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;
}
}