diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2005-03-13 23:11:46 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2005-03-13 22:11:46 +0000 |
commit | 1da4c3a71050c5dd82b1d72b84bfecb66f2d882b (patch) | |
tree | fcf2b0f81ffc50a649944251c5a2b3957c4c8e88 /gcc | |
parent | 053e7c38b330ffb596efb02e42e7e1c63519a39f (diff) | |
download | gcc-1da4c3a71050c5dd82b1d72b84bfecb66f2d882b.zip gcc-1da4c3a71050c5dd82b1d72b84bfecb66f2d882b.tar.gz gcc-1da4c3a71050c5dd82b1d72b84bfecb66f2d882b.tar.bz2 |
sparc.c (struct_value_alias_set): New global variable.
* config/sparc/sparc.c (struct_value_alias_set): New global variable.
(sparc_override_options): Initialize it.
(sparc_struct_value_rtx): Set it on the MEM to be returned.
From-SVN: r96395
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 19 |
2 files changed, 20 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5989d35b..2a4a78e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-14 Eric Botcazou <ebotcazou@libertysurf.fr> + + * config/sparc/sparc.c (struct_value_alias_set): New global variable. + (sparc_override_options): Initialize it. + (sparc_struct_value_rtx): Set it on the MEM to be returned. + 2005-03-13 David Edelsohn <edelsohn@gnu.org> * config/rs6000/predicates.md (mem_or_easy_const_operand): Delete. diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 43aa2f1..1d791cc 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -227,6 +227,9 @@ static int num_gfregs; /* The alias set for prologue/epilogue register save/restore. */ static GTY(()) int sparc_sr_alias_set; +/* The alias set for the structure return value. */ +static GTY(()) int struct_value_alias_set; + /* Save the operands last given to a compare for use when we generate a scc or bcc insn. */ rtx sparc_compare_op0, sparc_compare_op1; @@ -700,8 +703,9 @@ sparc_override_options (void) /* Do various machine dependent initializations. */ sparc_init_modes (); - /* Acquire a unique set number for our register saves and restores. */ + /* Acquire unique alias sets for our private stuff. */ sparc_sr_alias_set = new_alias_set (); + struct_value_alias_set = new_alias_set (); /* Set up function hooks. */ init_machine_status = sparc_init_machine_status; @@ -6086,12 +6090,17 @@ sparc_struct_value_rtx (tree fndecl ATTRIBUTE_UNUSED, int incoming) return 0; else { + rtx mem; + if (incoming) - return gen_rtx_MEM (Pmode, plus_constant (frame_pointer_rtx, - STRUCT_VALUE_OFFSET)); + mem = gen_rtx_MEM (Pmode, plus_constant (frame_pointer_rtx, + STRUCT_VALUE_OFFSET)); else - return gen_rtx_MEM (Pmode, plus_constant (stack_pointer_rtx, - STRUCT_VALUE_OFFSET)); + mem = gen_rtx_MEM (Pmode, plus_constant (stack_pointer_rtx, + STRUCT_VALUE_OFFSET)); + + set_mem_alias_set (mem, struct_value_alias_set); + return mem; } } |