aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>2000-02-28 11:38:10 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2000-02-28 11:38:10 +0000
commit035a6890e978b3ba9e23b8c202c2dbf997f2b673 (patch)
treee263a0246c94bdf9382ea0a6c810f8cb713e8020 /gcc/loop.c
parent18c038b9ca6f4e60c625636506cfe5a3290475a9 (diff)
downloadgcc-035a6890e978b3ba9e23b8c202c2dbf997f2b673.zip
gcc-035a6890e978b3ba9e23b8c202c2dbf997f2b673.tar.gz
gcc-035a6890e978b3ba9e23b8c202c2dbf997f2b673.tar.bz2
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
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index dbec617..9b1584c 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