diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-02-19 10:02:48 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-02-19 09:02:48 +0000 |
commit | 1b5963f7995824c4583515e6e255406ef615d60f (patch) | |
tree | e7e523d18c057794414cbe0b29fbcafb099ded13 /gcc/config/sparc/sparc.h | |
parent | 19037b5c9e4647b07708e2414deee35c02b21f0a (diff) | |
download | gcc-1b5963f7995824c4583515e6e255406ef615d60f.zip gcc-1b5963f7995824c4583515e6e255406ef615d60f.tar.gz gcc-1b5963f7995824c4583515e6e255406ef615d60f.tar.bz2 |
re PR target/12916 (No vector ABI)
PR target/12916
* config/sparc/sparc.h (NPARM_REGS): Delete.
(BASE_RETURN_VALUE_REG): Likewise.
(BASE_OUTGOING_VALUE_REG): Likewise.
(BASE_PASSING_ARG_REG): Likewise.
(BASE_INCOMING_ARG_REG): Likewise.
* config/sparc/sparc.c (sparc_strict_argument_naming): Test
TARGET_ARCH64, not TARGET_V9.
(function_arg_slotno): Dispatch based on the mode class.
Handle vector modes like floating-point modes.
(function_arg_record_value_1): Handle vector types like
floating-point types.
(function_arg_record_value_2): Likewise.
Calculate regno after mode transformation.
(function_arg): Handle vector modes like floating-point modes.
(function_arg_partial_nregs): Replace NPARM_REGS by SPARC_INT_ARG_MAX.
If ARCH64, do not recheck alignment.
(function_arg_pass_by_reference): Reorder the conditions.
(sparc_return_in_memory): Move after function_arg_padding.
Implement calling conventions for vector modes.
(sparc_struct_value_rtx): Move after sparc_return_in_memory.
(function_value): Move scope of 'regbase'.
Implement calling conventions for vector modes.
(sparc_builtin_saveregs): Replace NPARM_REGS by SPARC_INT_ARG_MAX
and BASE_INCOMING_ARG_REG by SPARC_INCOMING_INT_ARG_FIRST.
(sparc_va_arg): Use function_arg_pass_by_reference to test whether
the argument is passed by reference.
(sparc_type_code): Handle vector types.
From-SVN: r78087
Diffstat (limited to 'gcc/config/sparc/sparc.h')
-rw-r--r-- | gcc/config/sparc/sparc.h | 27 |
1 files changed, 0 insertions, 27 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index a8f51e6..515291c 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -1467,17 +1467,6 @@ extern char leaf_reg_remap[]; /* Stack layout; function entry, exit and calling. */ -/* Define the number of register that can hold parameters. - This macro is only used in other macro definitions below and in sparc.c. - MODE is the mode of the argument. - !v9: All args are passed in %o0-%o5. - v9: %o0-%o5 and %f0-%f31 are cumulatively used to pass values. - See the description in sparc.c. */ -#define NPARM_REGS(MODE) \ -(TARGET_ARCH64 \ - ? (GET_MODE_CLASS (MODE) == MODE_FLOAT ? 32 : 6) \ - : 6) - /* Define this if pushing a word on the stack makes the stack pointer a smaller address. */ #define STACK_GROWS_DOWNWARD @@ -1565,22 +1554,6 @@ extern char leaf_reg_remap[]; #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) 0 -/* Some subroutine macros specific to this machine. - When !TARGET_FPU, put float return values in the general registers, - since we don't have any fp registers. */ -#define BASE_RETURN_VALUE_REG(MODE) \ - (TARGET_FPU && FLOAT_MODE_P (MODE) ? 32 : 8) - -#define BASE_OUTGOING_VALUE_REG(MODE) \ - (TARGET_FPU && FLOAT_MODE_P (MODE) ? 32 : 24) - -#define BASE_PASSING_ARG_REG(MODE) \ - (TARGET_ARCH64 && TARGET_FPU && FLOAT_MODE_P (MODE) ? 32 : 8) - -/* ??? FIXME -- seems wrong for v9 structure passing... */ -#define BASE_INCOMING_ARG_REG(MODE) \ - (TARGET_ARCH64 && TARGET_FPU && FLOAT_MODE_P (MODE) ? 32 : 24) - /* Define this macro if the target machine has "register windows". This C expression returns the register number as seen by the called function corresponding to register number OUT as seen by the calling function. |