diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-05-28 00:08:41 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-05-28 00:08:41 +0200 |
commit | 47027bf3985b99614a97efc76b49ec87339e3722 (patch) | |
tree | 59406d9e109638aa1e6297ea4de9539e8753b7b1 /gcc/combine.c | |
parent | 1b408ba139d671e02b69aa5447e24f0801097442 (diff) | |
download | gcc-47027bf3985b99614a97efc76b49ec87339e3722.zip gcc-47027bf3985b99614a97efc76b49ec87339e3722.tar.gz gcc-47027bf3985b99614a97efc76b49ec87339e3722.tar.bz2 |
re PR bootstrap/44255 (gcc-4.6-20100522 bootstrap comparison failure on sparc64 and arm)
PR bootstrap/44255
* combine.c (struct rtx_subst_pair): Define unconditionally.
(propagate_for_debug_subst): Likewise. If not AUTO_INC_DEC,
copy_rtx pair->to instead of cleanup_auto_inc_dec it.
Call make_compound_operation on pair->to.
(propagate_for_debug): Don't call make_compound_operation here.
Always use simplify_replace_fn_rtx.
From-SVN: r159952
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index e9389d7..1bee2c7 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2271,6 +2271,7 @@ cleanup_auto_inc_dec (rtx src, bool after, enum machine_mode mem_mode) return x; } +#endif /* Auxiliary data structure for propagate_for_debug_stmt. */ @@ -2294,12 +2295,16 @@ propagate_for_debug_subst (rtx from, const_rtx old_rtx, void *data) if (!pair->adjusted) { pair->adjusted = true; +#ifdef AUTO_INC_DEC pair->to = cleanup_auto_inc_dec (pair->to, pair->after, VOIDmode); +#else + pair->to = copy_rtx (pair->to); +#endif + pair->to = make_compound_operation (pair->to, SET); return pair->to; } return copy_rtx (pair->to); } -#endif /* Replace occurrences of DEST with SRC in DEBUG_INSNs between INSN and LAST. If MOVE holds, debug insns must also be moved past @@ -2309,16 +2314,12 @@ static void propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src, bool move) { rtx next, move_pos = move ? last : NULL_RTX, loc; - bool first_p; -#ifdef AUTO_INC_DEC struct rtx_subst_pair p; p.to = src; p.adjusted = false; p.after = move; -#endif - first_p = true; next = NEXT_INSN (insn); while (next != last) { @@ -2326,17 +2327,8 @@ propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src, bool move) next = NEXT_INSN (insn); if (DEBUG_INSN_P (insn)) { - if (first_p) - { - src = make_compound_operation (src, SET); - first_p = false; - } -#ifdef AUTO_INC_DEC loc = simplify_replace_fn_rtx (INSN_VAR_LOCATION_LOC (insn), dest, propagate_for_debug_subst, &p); -#else - loc = simplify_replace_rtx (INSN_VAR_LOCATION_LOC (insn), dest, src); -#endif if (loc == INSN_VAR_LOCATION_LOC (insn)) continue; INSN_VAR_LOCATION_LOC (insn) = loc; |