diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-11-20 08:41:32 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-11-20 08:41:32 +0000 |
commit | 03248b193e6bac947221d44cc4dff913183cb5ae (patch) | |
tree | e2c9a37069b356f4cb760951f499abdac631e293 /gcc/config/sparc | |
parent | d7cbb3ef81425f9adec25287428049a99320c479 (diff) | |
download | gcc-03248b193e6bac947221d44cc4dff913183cb5ae.tar.gz |
2008-11-20 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r142033
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@142036 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r-- | gcc/config/sparc/sparc.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index c69f6182162..d3d1af0479e 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -5138,15 +5138,13 @@ function_arg_union_value (int size, enum machine_mode mode, int slotno, Return an expression valid as a return value for the two macros FUNCTION_ARG and FUNCTION_VALUE. - SIZE is the size in bytes of the vector. - BASE_MODE is the argument's base machine mode. + SIZE is the size in bytes of the vector (at least 8 bytes). REGNO is the FP hard register the vector will be passed in. */ static rtx -function_arg_vector_value (int size, enum machine_mode base_mode, int regno) +function_arg_vector_value (int size, int regno) { - unsigned short base_mode_size = GET_MODE_SIZE (base_mode); - int nregs = size / base_mode_size, i; + int i, nregs = size / 8; rtx regs; regs = gen_rtx_PARALLEL (BLKmode, rtvec_alloc (nregs)); @@ -5155,9 +5153,8 @@ function_arg_vector_value (int size, enum machine_mode base_mode, int regno) { XVECEXP (regs, 0, i) = gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_REG (base_mode, regno), - GEN_INT (base_mode_size * i)); - regno += base_mode_size / 4; + gen_rtx_REG (DImode, regno + 2*i), + GEN_INT (i*8)); } return regs; @@ -5203,7 +5200,6 @@ function_arg (const struct sparc_args *cum, enum machine_mode mode, if (mode == BLKmode) return function_arg_vector_value (size, - TYPE_MODE (TREE_TYPE (type)), SPARC_FP_ARG_FIRST + 2*slotno); else mclass = MODE_FLOAT; @@ -5619,7 +5615,6 @@ function_value (const_tree type, enum machine_mode mode, int incoming_p) if (mode == BLKmode) return function_arg_vector_value (size, - TYPE_MODE (TREE_TYPE (type)), SPARC_FP_ARG_FIRST); else mclass = MODE_FLOAT; |