diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2001-07-02 19:47:44 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2001-07-02 15:47:44 -0400 |
commit | f4ef873c3108a163d7789b137b391c3853c25011 (patch) | |
tree | 35bfff21e3c73e0c27ad267a7d90a3719cfb86af /gcc/builtins.c | |
parent | 494fff4cea67e3d1415788d318fb4448cf9411c5 (diff) | |
download | gcc-f4ef873c3108a163d7789b137b391c3853c25011.zip gcc-f4ef873c3108a163d7789b137b391c3853c25011.tar.gz gcc-f4ef873c3108a163d7789b137b391c3853c25011.tar.bz2 |
emit-rtl.c (adjust_address): New function.
* emit-rtl.c (adjust_address): New function.
* expr.h (adjust_address): Add declaration.
* builtins.c: Replace some calls to change_address with calls to it
or to validize_mem.
* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
* config/arm/arm.c, config/convex/convex.c: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.c, config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
* config/sh/sh.c, config/sparc/sparc.md: Likewise.
From-SVN: r43702
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 4fc329f..f6f76ba 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -947,8 +947,7 @@ result_vector (savep, result) if (size % align != 0) size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, savep ? regno : INCOMING_REGNO (regno)); - mem = change_address (result, mode, - plus_constant (XEXP (result, 0), size)); + mem = adjust_address (result, mode, size); savevec[nelts++] = (savep ? gen_rtx_SET (VOIDmode, mem, reg) : gen_rtx_SET (VOIDmode, reg, mem)); @@ -989,15 +988,12 @@ expand_builtin_apply_args_1 () tem = gen_rtx_REG (mode, INCOMING_REGNO (regno)); - emit_move_insn (change_address (registers, mode, - plus_constant (XEXP (registers, 0), - size)), - tem); + emit_move_insn (adjust_address (registers, mode, size), tem); size += GET_MODE_SIZE (mode); } /* Save the arg pointer to the block. */ - emit_move_insn (change_address (registers, Pmode, XEXP (registers, 0)), + emit_move_insn (adjust_address (registers, Pmode, 0), copy_to_reg (virtual_incoming_args_rtx)); size = GET_MODE_SIZE (Pmode); @@ -1005,9 +1001,7 @@ expand_builtin_apply_args_1 () "invisible" first argument. */ if (struct_value_incoming_rtx) { - emit_move_insn (change_address (registers, Pmode, - plus_constant (XEXP (registers, 0), - size)), + emit_move_insn (adjust_address (registers, Pmode, size), copy_to_reg (struct_value_incoming_rtx)); size += GET_MODE_SIZE (Pmode); } @@ -1124,11 +1118,7 @@ expand_builtin_apply (function, arguments, argsize) if (size % align != 0) size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, regno); - emit_move_insn (reg, - change_address (arguments, mode, - plus_constant (XEXP (arguments, 0), - size))); - + emit_move_insn (reg, adjust_address (arguments, mode, size)); use_reg (&call_fusage, reg); size += GET_MODE_SIZE (mode); } @@ -1139,10 +1129,7 @@ expand_builtin_apply (function, arguments, argsize) if (struct_value_rtx) { rtx value = gen_reg_rtx (Pmode); - emit_move_insn (value, - change_address (arguments, Pmode, - plus_constant (XEXP (arguments, 0), - size))); + emit_move_insn (value, adjust_address (arguments, Pmode, size)); emit_move_insn (struct_value_rtx, value); if (GET_CODE (struct_value_rtx) == REG) use_reg (&call_fusage, struct_value_rtx); @@ -1186,9 +1173,7 @@ expand_builtin_apply (function, arguments, argsize) gen_rtx_MEM (FUNCTION_MODE, function), const0_rtx, NULL_RTX, const0_rtx)); - emit_move_insn (change_address (result, GET_MODE (valreg), - XEXP (result, 0)), - valreg); + emit_move_insn (adjust_address (result, GET_MODE (valreg), 0), valreg); } else #endif @@ -1264,10 +1249,7 @@ expand_builtin_return (result) if (size % align != 0) size = CEIL (size, align) * align; reg = gen_rtx_REG (mode, INCOMING_REGNO (regno)); - emit_move_insn (reg, - change_address (result, mode, - plus_constant (XEXP (result, 0), - size))); + emit_move_insn (reg, adjust_address (result, mode, size)); push_to_sequence (call_fusage); emit_insn (gen_rtx_USE (VOIDmode, reg)); |