diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1997-01-19 21:31:33 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1997-01-19 21:31:33 -0500 |
commit | 73fef4fe212796b459163b093386128128994217 (patch) | |
tree | a44631fe77a37f872f0c0550675d41623a588ae8 | |
parent | 9b80d951cacd1559a095f45cf1ccea58ec12dd26 (diff) | |
download | gcc-73fef4fe212796b459163b093386128128994217.zip gcc-73fef4fe212796b459163b093386128128994217.tar.gz gcc-73fef4fe212796b459163b093386128128994217.tar.bz2 |
(SETUP_INCOMING_VARARGS): Delete duplicate definition.
From-SVN: r13536
-rw-r--r-- | gcc/config/alpha/vms.h | 99 |
1 files changed, 32 insertions, 67 deletions
diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h index 70ed21d..ab762ca 100644 --- a/gcc/config/alpha/vms.h +++ b/gcc/config/alpha/vms.h @@ -155,39 +155,40 @@ do { \ = vmskrunch (XSTR (XEXP (DECL_RTL (DECL), 0), 0)); \ } while (0) -/* Don't use BLKmode if VAX floats are used. */ +/* Perform any needed actions needed for a function that is receiving a + variable number of arguments. + + CUM is as for INIT_CUMULATIVE_ARGS. + + MODE and TYPE are the mode and type of the current parameter. + + PRETEND_SIZE is a variable that should be set to the amount of stack + that must be pushed by the prolog to pretend that our caller pushed + it. + + Normally, this macro will push all remaining incoming registers on the + stack and set PRETEND_SIZE to the length of the registers pushed. + + For VMS, we allocate space for all 6 arg registers plus a count. + + However, if NO registers need to be saved, don't allocate any space. + This is not only because we won't need the space, but because AP includes + the current_pretend_args_size and we don't want to mess up any + ap-relative addresses already made. */ + #undef SETUP_INCOMING_VARARGS #define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) \ -{ if ((CUM & 0xff) < 6) \ - { \ - if (! (NO_RTL)) \ - { \ - move_block_from_reg \ - (16 + (CUM & 0xff), \ - gen_rtx (MEM, BLKmode, \ - plus_constant (virtual_incoming_args_rtx, \ - ((CUM & 0xff) + 6)* UNITS_PER_WORD)),\ - 6 - (CUM & 0xff), (6 - (CUM & 0xff)) * UNITS_PER_WORD); \ - if (!TARGET_FLOAT_VAX || !TARGET_FPREGS) \ - move_block_from_reg \ - (16 + (TARGET_FPREGS ? 32 : 0) + (CUM & 0xff), \ - gen_rtx (MEM, BLKmode, \ - plus_constant (virtual_incoming_args_rtx, \ - (CUM & 0xff) * UNITS_PER_WORD)),\ - 6 - (CUM & 0xff), (6 - (CUM & 0xff)) * UNITS_PER_WORD); \ - else \ - { \ - int i; \ - for (i = (CUM & 0xff); i < 6; i++) \ - emit_move_insn ( \ - gen_rtx (MEM, DFmode, \ - plus_constant (virtual_incoming_args_rtx, \ - i * UNITS_PER_WORD)), \ - gen_rtx (REG, DFmode, 48+i)); \ - } \ - } \ - PRETEND_SIZE = 12 * UNITS_PER_WORD; \ - } \ +{ if ((CUM) < 6) \ + { \ + if (! (NO_RTL)) \ + { \ + emit_move_insn (gen_rtx (REG, DImode, 1), \ + virtual_incoming_args_rtx); \ + emit_insn (gen_arg_home ()); \ + } \ + \ + PRETEND_SIZE = 7 * UNITS_PER_WORD; \ + } \ } #undef ASM_DECLARE_FUNCTION_NAME @@ -277,42 +278,6 @@ void *function_arg (); { ASM_OUTPUT_ALIGN (FILE, 3); ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM); } #define NO_MD_PROTOTYPES -/* Perform any needed actions needed for a function that is receiving a - variable number of arguments. - - CUM is as above. - - MODE and TYPE are the mode and type of the current parameter. - - PRETEND_SIZE is a variable that should be set to the amount of stack - that must be pushed by the prolog to pretend that our caller pushed - it. - - Normally, this macro will push all remaining incoming registers on the - stack and set PRETEND_SIZE to the length of the registers pushed. - - For VMS, we allocate space for all 6 arg registers plus a count. - - However, if NO registers need to be saved, don't allocate any space. - This is not only because we won't need the space, but because AP includes - the current_pretend_args_size and we don't want to mess up any - ap-relative addresses already made. */ - - -#undef SETUP_INCOMING_VARARGS -#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) \ -{ if ((CUM) < 6) \ - { \ - if (! (NO_RTL)) \ - { \ - emit_move_insn (gen_rtx (REG, DImode, 1), \ - virtual_incoming_args_rtx); \ - emit_insn (gen_arg_home ()); \ - } \ - \ - PRETEND_SIZE = 7 * UNITS_PER_WORD; \ - } \ -} /* Output assembler code for a block containing the constant parts of a trampoline, leaving space for the variable parts. |