+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.
/* 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;
/* 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;
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;
}
}