This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Minor expr.c patches
- To: gcc-patches at gcc dot gnu dot org
- Subject: Minor expr.c patches
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Date: Thu, 28 Jun 01 06:21:18 EDT
This fixes a bug in my last change and also deals with an obscure case of
COMPONENT_REF in the LHS of an assignment. Test cases are in Ada. Tested
on alphaev56.
Thu Jun 28 06:16:45 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* expr.c (expand_assignment): When have varying-length object,
make MEM a BLKmode.
(expand_expr, case ADDR_EXPR): Use SAVE_EXPR_RTL after putting
SAVE_EXPR stack in case we had a SUBREG.
*** expr.c 2001/06/20 07:18:08 1.329
--- expr.c 2001/06/28 10:10:32
*************** expand_assignment (to, from, want_value,
*** 3811,3815 ****
rtx from_rtx = expand_expr_unaligned (from, &from_align);
rtx inner_to_rtx
! = change_address (to_rtx, VOIDmode,
plus_constant (XEXP (to_rtx, 0),
bitpos / BITS_PER_UNIT));
--- 3811,3815 ----
rtx from_rtx = expand_expr_unaligned (from, &from_align);
rtx inner_to_rtx
! = change_address (to_rtx, BLKmode,
plus_constant (XEXP (to_rtx, 0),
bitpos / BITS_PER_UNIT));
*************** expand_expr (exp, target, tmode, modifie
*** 7040,7044 ****
forcing the SAVE_EXPR into memory. */
if (TREE_CODE (TREE_OPERAND (exp, 0)) == SAVE_EXPR)
! put_var_into_stack (TREE_OPERAND (exp, 0));
else
{
--- 7040,7047 ----
forcing the SAVE_EXPR into memory. */
if (TREE_CODE (TREE_OPERAND (exp, 0)) == SAVE_EXPR)
! {
! put_var_into_stack (TREE_OPERAND (exp, 0));
! op0 = SAVE_EXPR_RTL (TREE_OPERAND (exp, 0));
! }
else
{