This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

2.95: Backport final.c bugfix


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]);
     }
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]