aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-01-19 21:31:33 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1997-01-19 21:31:33 -0500
commit73fef4fe212796b459163b093386128128994217 (patch)
treea44631fe77a37f872f0c0550675d41623a588ae8
parent9b80d951cacd1559a095f45cf1ccea58ec12dd26 (diff)
downloadgcc-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.h99
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.