aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1999-06-24 22:38:30 -0600
committerJeff Law <law@gcc.gnu.org>1999-06-24 22:38:30 -0600
commit8d22ad723e82d4043ed232787712a8f73f0606b0 (patch)
tree5e7677b33c51460ade41ced78e7ed71d6175aba3
parent2f47f8d0aff1e3258cfac604badb1ddd92450635 (diff)
downloadgcc-8d22ad723e82d4043ed232787712a8f73f0606b0.zip
gcc-8d22ad723e82d4043ed232787712a8f73f0606b0.tar.gz
gcc-8d22ad723e82d4043ed232787712a8f73f0606b0.tar.bz2
loop.c (verify_dominator): Properly handle ADDR_VEC and ADDR_DIFF_VEC insns that appear inside loops.
h * loop.c (verify_dominator): Properly handle ADDR_VEC and ADDR_DIFF_VEC insns that appear inside loops. From-SVN: r27760
-rw-r--r--gcc/loop.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index b616be0..ef64fd0 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -2564,14 +2564,21 @@ verify_dominator (loop_number)
&& GET_CODE (PATTERN (insn)) != RETURN)
{
rtx label = JUMP_LABEL (insn);
- int label_luid = INSN_LUID (label);
-
- if (! condjump_p (insn)
- && ! condjump_in_parallel_p (insn))
+ int label_luid;
+
+ /* If it is not a jump we can easily understand or for
+ which we do not have jump target information in the JUMP_LABEL
+ field (consider ADDR_VEC and ADDR_DIFF_VEC insns), then clear
+ LOOP_NUMBER_CONT_DOMINATOR. */
+ if ((! condjump_p (insn)
+ && ! condjump_in_parallel_p (insn))
+ || label == NULL_RTX)
{
loop_number_cont_dominator[loop_number] = NULL_RTX;
return;
}
+
+ label_luid = INSN_LUID (label);
if (label_luid < INSN_LUID (loop_number_loop_cont[loop_number])
&& (label_luid
> INSN_LUID (loop_number_cont_dominator[loop_number])))