This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
2.95: Backport final.c bugfix
- To: <gcc-patches at gcc dot gnu dot org>
- Subject: 2.95: Backport final.c bugfix
- From: Bernd Schmidt <bernds at redhat dot com>
- Date: Fri, 30 Mar 2001 14:20:30 +0100 (BST)
We were leaving SUBREGs around after reload. This patch is necessary for an
ARM bug fix I'll install soon.
Bernd
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v
retrieving revision 1.3667.4.344
diff -u -p -r1.3667.4.344 ChangeLog
--- ChangeLog 2001/03/30 13:13:06 1.3667.4.344
+++ ChangeLog 2001/03/30 13:16:34
@@ -5,6 +5,8 @@
* reload1.c (delete_output_reload): Call eliminate_regs on substed.
(reload_as_needed): Call update_eliminable_offsets a bit later.
+ * final.c (cleanup_subreg_operands): Also clean up inside MEMs.
+
2001-03-28 Bernd Schmidt <bernds@redhat.com>
* flow.c (propagate_block): When trying to delete a case vector, cope
Index: final.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/final.c,v
retrieving revision 1.77.4.3
diff -u -p -r1.77.4.3 final.c
--- final.c 2001/03/20 19:51:58 1.77.4.3
+++ final.c 2001/03/30 13:16:37
@@ -3047,7 +3047,8 @@ cleanup_subreg_operands (insn)
if (GET_CODE (recog_operand[i]) == SUBREG)
recog_operand[i] = alter_subreg (recog_operand[i]);
else if (GET_CODE (recog_operand[i]) == PLUS
- || GET_CODE (recog_operand[i]) == MULT)
+ || GET_CODE (recog_operand[i]) == MULT
+ || GET_CODE (recog_operand[i]) == MEM)
recog_operand[i] = walk_alter_subreg (recog_operand[i]);
}
@@ -3056,7 +3057,8 @@ cleanup_subreg_operands (insn)
if (GET_CODE (*recog_dup_loc[i]) == SUBREG)
*recog_dup_loc[i] = alter_subreg (*recog_dup_loc[i]);
else if (GET_CODE (*recog_dup_loc[i]) == PLUS
- || GET_CODE (*recog_dup_loc[i]) == MULT)
+ || GET_CODE (*recog_dup_loc[i]) == MULT
+ || GET_CODE (*recog_dup_loc[i]) == MEM)
*recog_dup_loc[i] = walk_alter_subreg (*recog_dup_loc[i]);
}
}