diff options
author | mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-11-16 06:57:59 +0000 |
---|---|---|
committer | mkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-11-16 06:57:59 +0000 |
commit | 5d65a39c75e476e21bfd633960e6d45029c6acd2 (patch) | |
tree | e42fd46715b58df86d89a5108120bf34ad75b583 /gcc/haifa-sched.c | |
parent | cada167060726e14f526e246a3d1a7578b3172c1 (diff) | |
download | gcc-5d65a39c75e476e21bfd633960e6d45029c6acd2.tar.gz |
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
* cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
bb to ...
(get_last_bb_insn): ... new global function.
(basic_block.h): Declare it.
* haifa-sched.c (create_recovery_block): Use it.
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
* gcc.c-torture/compile/pr29201.c: New test for ia64 target.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118882 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r-- | gcc/haifa-sched.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 6cd1fe1e185..3fda0683fac 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -3544,18 +3544,22 @@ static basic_block create_recovery_block (void) { rtx label; + rtx barrier; basic_block rec; added_recovery_block_p = true; if (!before_recovery) init_before_recovery (); - - label = gen_label_rtx (); - gcc_assert (BARRIER_P (NEXT_INSN (BB_END (before_recovery)))); - label = emit_label_after (label, NEXT_INSN (BB_END (before_recovery))); - rec = create_basic_block (label, label, before_recovery); + barrier = get_last_bb_insn (before_recovery); + gcc_assert (BARRIER_P (barrier)); + + label = emit_label_after (gen_label_rtx (), barrier); + + rec = create_basic_block (label, label, before_recovery); + + /* Recovery block always end with an unconditional jump. */ emit_barrier_after (BB_END (rec)); if (BB_PARTITION (before_recovery) != BB_UNPARTITIONED) |