aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2010-05-28 00:08:41 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-05-28 00:08:41 +0200
commit47027bf3985b99614a97efc76b49ec87339e3722 (patch)
tree59406d9e109638aa1e6297ea4de9539e8753b7b1 /gcc
parent1b408ba139d671e02b69aa5447e24f0801097442 (diff)
downloadgcc-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')
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/combine.c20
2 files changed, 17 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c32fcc3..0638a80 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,14 @@
-2010-05-27 Sterling Augustine <sterling@tensilica.com>
+2010-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ 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.
+
+2010-05-27 Sterling Augustine <sterling@tensilica.com>
* doc/invoke.texi (xtensa options): Add -mforce-no-pic.
* config/xtensa/xtensa.c (override_options): Check
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;