]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Clean up SUBREGs inside memory references
authorBernd Schmidt <bernds@redhat.com>
Fri, 30 Mar 2001 13:22:22 +0000 (13:22 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Fri, 30 Mar 2001 13:22:22 +0000 (13:22 +0000)
From-SVN: r40965

gcc/ChangeLog
gcc/final.c

index f899c1c3e9eaae1bc8072fa332853d19de29b1ba..5bd0802858b993cc942d6ff1e42a1987cf0b8e34 100644 (file)
@@ -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 d12ec87ec475634fb62cc1caace5d97e25237d30..7a31cdeef8a53a21cd1ce70f579559d63126b021 100644 (file)
@@ -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]);
     }
 }