summaryrefslogtreecommitdiff
path: root/gcc/sched-ebb.c
diff options
context:
space:
mode:
authormkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-06 21:45:13 +0000
committermkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-06 21:45:13 +0000
commit2521f35f9132bb59f321a72ac3096f3c4091236d (patch)
treed4aed27cfc02ff872c40550b81096f52a7e90e14 /gcc/sched-ebb.c
parentecfed7a2cc19c7b913a8f4752c138aac5ae4b01d (diff)
downloadgcc-2521f35f9132bb59f321a72ac3096f3c4091236d.tar.gz
2006-10-06 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR rtl-optimization/29128 * sched-int.h (IS_SPECULATION_BRANCHY_CHECK_P): New macro. * sched-ebb.c (advance_target_bb): Use it to fix condition to allow interblock movement of speculation checks. * gcc.c-torture/compile/pr29128.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117515 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-ebb.c')
-rw-r--r--gcc/sched-ebb.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c
index b220348da7b..599241a47c8 100644
--- a/gcc/sched-ebb.c
+++ b/gcc/sched-ebb.c
@@ -719,9 +719,13 @@ advance_target_bb (basic_block bb, rtx insn)
{
if (BLOCK_FOR_INSN (insn) != bb
&& control_flow_insn_p (insn)
- && !RECOVERY_BLOCK (insn)
- && !RECOVERY_BLOCK (BB_END (bb)))
+ /* We handle interblock movement of the speculation check
+ or over a speculation check in
+ haifa-sched.c: move_block_after_check (). */
+ && !IS_SPECULATION_BRANCHY_CHECK_P (insn)
+ && !IS_SPECULATION_BRANCHY_CHECK_P (BB_END (bb)))
{
+ /* Assert that we don't move jumps across blocks. */
gcc_assert (!control_flow_insn_p (BB_END (bb))
&& NOTE_INSN_BASIC_BLOCK_P (BB_HEAD (bb->next_bb)));
return bb;