From: Eric Botcazou Date: Sun, 13 Mar 2005 22:11:46 +0000 (+0100) Subject: sparc.c (struct_value_alias_set): New global variable. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1da4c3a71050c5dd82b1d72b84bfecb66f2d882b;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5989d35b59..2a4a78e1627 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-14 Eric Botcazou + + * 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 * 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 43aa2f17c87..1d791ccd1e3 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; } }