From 569f8d982a8147ed19d8370d127291c308116419 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Sun, 5 Feb 2006 15:58:07 +0100 Subject: [PATCH] re PR rtl-optimization/26087 (ICE in df_find_use) PR rtl-optimization/26087 * rtlanal.c (canonicalize_condition): Do not cross basic block boundaries. From-SVN: r110614 --- gcc/ChangeLog | 6 ++++++ gcc/rtlanal.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1fac08dbb5..4908f5c6137 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-02-04 Zdenek Dvorak + + PR rtl-optimization/26087 + * rtlanal.c (canonicalize_condition): Do not cross basic block + boundaries. + 2006-02-04 Alexandre Oliva PR debug/24444 diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 91fb4898b73..1390ad98529 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -4508,6 +4508,7 @@ canonicalize_condition (rtx insn, rtx cond, int reverse, rtx *earliest, rtx op0, op1; int reverse_code = 0; enum machine_mode mode; + basic_block bb = BLOCK_FOR_INSN (insn); code = GET_CODE (cond); mode = GET_MODE (cond); @@ -4569,7 +4570,11 @@ canonicalize_condition (rtx insn, rtx cond, int reverse, rtx *earliest, if ((prev = prev_nonnote_insn (prev)) == 0 || !NONJUMP_INSN_P (prev) - || FIND_REG_INC_NOTE (prev, NULL_RTX)) + || FIND_REG_INC_NOTE (prev, NULL_RTX) + /* In cfglayout mode, there do not have to be labels at the + beginning of a block, or jumps at the end, so the previous + conditions would not stop us when we reach bb boundary. */ + || BLOCK_FOR_INSN (prev) != bb) break; set = set_of (op0, prev); -- 2.30.2