diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2006-11-22 01:12:52 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-11-22 00:12:52 +0000 |
commit | 7d93d98774676539dcda428d198342bdc793ccac (patch) | |
tree | c758a5e110c013484ee186033b5a0b2cbd95d424 /gcc/loop-doloop.c | |
parent | 92c59193a16f4bf1731e62a07e0540171269c36e (diff) | |
download | gcc-7d93d98774676539dcda428d198342bdc793ccac.zip gcc-7d93d98774676539dcda428d198342bdc793ccac.tar.gz gcc-7d93d98774676539dcda428d198342bdc793ccac.tar.bz2 |
re PR rtl-optimization/29924 (pr24626-4.c fails on powerpc-aix and others)
PR rtl-optimization/29924
* loop-unroll.c (split_edge_and_insert): Handle the case insns is NULL.
(unroll_loop_runtime_iterations): Assert that the argument passed to
split_edge_and_insert is not NULL.
* loop-doloop.c (add_test): Ditto.
From-SVN: r119078
Diffstat (limited to 'gcc/loop-doloop.c')
-rw-r--r-- | gcc/loop-doloop.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c index afe65cb..004dcfe 100644 --- a/gcc/loop-doloop.c +++ b/gcc/loop-doloop.c @@ -248,7 +248,7 @@ add_test (rtx cond, edge *e, basic_block dest) do_compare_rtx_and_jump (op0, op1, code, 0, mode, NULL_RTX, NULL_RTX, label); jump = get_last_insn (); - if (!JUMP_P (jump)) + if (!jump || !JUMP_P (jump)) { /* The condition is always false and the jump was optimized out. */ end_sequence (); @@ -257,6 +257,10 @@ add_test (rtx cond, edge *e, basic_block dest) seq = get_insns (); end_sequence (); + + /* There always is at least the jump insn in the sequence. */ + gcc_assert (seq != NULL_RTX); + bb = split_edge_and_insert (*e, seq); *e = single_succ_edge (bb); |