From c4e59f513be341b6616f6d1ed26dc7b7e32d932f Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 29 Dec 2001 21:35:02 +0000 Subject: [PATCH] expr.c (store_field): Use adjust_address, not PUT_MODE. * expr.c (store_field): Use adjust_address, not PUT_MODE. (expand_expr, case VIEW_CONVERT_EXPR): Likewise. * reload1.c (eliminate_regs, case SUBREG): Likewise, but use adjust_address_nv. * varasm.c (make_decl_rtl): Likewise. * integrate.c (copy_rtx_and_substitute, case MEM): Likewise, but use replace_equiv_address_nv. From-SVN: r48387 --- gcc/ChangeLog | 8 ++++++++ gcc/expr.c | 9 +++------ gcc/integrate.c | 7 +++---- gcc/reload1.c | 9 +-------- gcc/varasm.c | 6 ++---- 5 files changed, 17 insertions(+), 22 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 85930d6f0cb..af84a629c8f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ Sat Dec 29 15:48:54 2001 Richard Kenner + * expr.c (store_field): Use adjust_address, not PUT_MODE. + (expand_expr, case VIEW_CONVERT_EXPR): Likewise. + * reload1.c (eliminate_regs, case SUBREG): Likewise, but use + adjust_address_nv. + * varasm.c (make_decl_rtl): Likewise. + * integrate.c (copy_rtx_and_substitute, case MEM): Likewise, but use + replace_equiv_address_nv. + * varasm.c (decode_addr_const, case INTEGER_CST): Call output_constant_def instead of looking at TREE_CST_RTL. diff --git a/gcc/expr.c b/gcc/expr.c index 1c320b98e01..60c3431f73a 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -5006,9 +5006,7 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode, unsignedp, type, = assign_temp (build_qualified_type (type, TYPE_QUALS (type) | TYPE_QUAL_CONST), 0, 1, 1); - rtx blk_object = copy_rtx (object); - - PUT_MODE (blk_object, BLKmode); + rtx blk_object = adjust_address (object, BLKmode, 0); if (bitsize != (HOST_WIDE_INT) GET_MODE_BITSIZE (GET_MODE (target))) emit_move_insn (object, target); @@ -7340,12 +7338,11 @@ expand_expr (exp, target, tmode, modifier) (HOST_WIDE_INT) GET_MODE_SIZE (TYPE_MODE (type))); rtx new = assign_stack_temp_for_type (TYPE_MODE (type), temp_size, 0, type); - rtx new_with_op0_mode = copy_rtx (new); + rtx new_with_op0_mode = adjust_address (new, GET_MODE (op0), 0); if (TREE_ADDRESSABLE (exp)) abort (); - PUT_MODE (new_with_op0_mode, GET_MODE (op0)); if (GET_MODE (op0) == BLKmode) emit_block_move (new_with_op0_mode, op0, GEN_INT (GET_MODE_SIZE (TYPE_MODE (type)))); @@ -7355,7 +7352,7 @@ expand_expr (exp, target, tmode, modifier) op0 = new; } - PUT_MODE (op0, TYPE_MODE (type)); + op0 = adjust_address (op0, TYPE_MODE (type), 0); } return op0; diff --git a/gcc/integrate.c b/gcc/integrate.c index ea389815a28..47c4a4db135 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -2263,10 +2263,9 @@ copy_rtx_and_substitute (orig, map, for_lhs) return validize_mem (force_const_mem (const_mode, constant)); } - copy = rtx_alloc (MEM); - PUT_MODE (copy, mode); - XEXP (copy, 0) = copy_rtx_and_substitute (XEXP (orig, 0), map, 0); - MEM_COPY_ATTRIBUTES (copy, orig); + copy = replace_equiv_address_nv (orig, + copy_rtx_and_substitute (XEXP (orig, 0), + map, 0)); /* If inlining and this is not for the LHS, turn off RTX_UNCHANGING_P since this may be an indirect reference to a parameter and the diff --git a/gcc/reload1.c b/gcc/reload1.c index 451a0906052..5844932d4cd 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -2552,14 +2552,7 @@ eliminate_regs (x, mem_mode, insn) ) || x_size == new_size) ) - { - int offset = SUBREG_BYTE (x); - enum machine_mode mode = GET_MODE (x); - - PUT_MODE (new, mode); - XEXP (new, 0) = plus_constant (XEXP (new, 0), offset); - return new; - } + return adjust_address_nv (x, GET_MODE (x), SUBREG_BYTE (x)); else return gen_rtx_SUBREG (GET_MODE (x), new, SUBREG_BYTE (x)); } diff --git a/gcc/varasm.c b/gcc/varasm.c index aabdd17a41a..419791d6363 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -840,10 +840,8 @@ make_decl_rtl (decl, asmspec) { /* If the old RTL had the wrong mode, fix the mode. */ if (GET_MODE (DECL_RTL (decl)) != DECL_MODE (decl)) - { - rtx rtl = DECL_RTL (decl); - PUT_MODE (rtl, DECL_MODE (decl)); - } + SET_DECL_RTL (decl, adjust_address_nv (DECL_RTL (decl), + DECL_MODE (decl), 0)); /* ??? Another way to do this would be to do what halfpic.c does and maintain a hashed table of such critters. */