From 035a6890e978b3ba9e23b8c202c2dbf997f2b673 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Mon, 28 Feb 2000 11:38:10 +0000 Subject: [PATCH] Fix for SH gcc.c-torture/compile/991229-3.c failure: * loop.c (reg_in_basic_block_p): Don't abort when falling through to the end of the function. From-SVN: r32229 --- gcc/ChangeLog | 5 +++++ gcc/loop.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d77780484d0..c064d94ed2c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Feb 28 11:34:43 2000 J"orn Rennecke + + * loop.c (reg_in_basic_block_p): Don't abort when falling through + to the end of the function. + 2000-02-27 Mark Mitchell * emit-rtl.c (remove_unncessary_notes): Remove notes for empty diff --git a/gcc/loop.c b/gcc/loop.c index dbec617b329..9b1584cf325 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -1284,8 +1284,12 @@ reg_in_basic_block_p (insn, reg) } } - /* The "last use" doesn't follow the "first use"?? */ - abort (); + /* The "last use" that was recorded can't be found after the first + use. This can happen when the last use was deleted while + processing an inner loop, this inner loop was then completely + unrolled, and the outer loop is always exited after the inner loop, + so that everything after the first use becomes a single basic block. */ + return 1; } /* Compute the benefit of eliminating the insns in the block whose