From f18c3345e3acc905fb123d58f32f494a0cd4dc76 Mon Sep 17 00:00:00 2001 From: abel Date: Mon, 3 Feb 2014 12:00:23 +0000 Subject: [PATCH] gcc/ PR rtl-optimization/57662 * sel-sched.c (code_motion_path_driver): Do not mark already not existing blocks in the visiting bitmap. testsuite/ PR rtl-optimization/57662 * g++.dg/pr57662.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207421 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/sel-sched.c | 6 +++++- gcc/testsuite/ChangeLog | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 13333db..5be3db5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2014-02-03 Andrey Belevantsev + PR rtl-optimization/57662 + * sel-sched.c (code_motion_path_driver): Do not mark already not + existing blocks in the visiting bitmap. + +2014-02-03 Andrey Belevantsev + * sel-sched-ir.c (sel_gen_insn_from_expr_after): Reset INSN_DELETED_P on the insn being emitted. diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index ad4a0aa..d3d73b2 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -6741,7 +6741,11 @@ code_motion_path_driver (insn_t insn, av_set_t orig_ops, ilist_t path, the numbering by creating bookkeeping blocks. */ if (removed_last_insn) insn = PREV_INSN (insn); - bitmap_set_bit (code_motion_visited_blocks, BLOCK_FOR_INSN (insn)->index); + + /* If we have simplified the control flow and removed the first jump insn, + there's no point in marking this block in the visited blocks bitmap. */ + if (BLOCK_FOR_INSN (insn)) + bitmap_set_bit (code_motion_visited_blocks, BLOCK_FOR_INSN (insn)->index); return true; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d1f356..4f718dd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-03 Andrey Belevantsev + + PR rtl-optimization/57662 + * g++.dg/pr57662.C: New test. + 2014-02-02 Bill Schmidt * gcc.dg/vmx/3b-15.c: Remove special handling for little endian. -- 2.7.4