+2010-07-22 Iain Sandoe <iains@gcc.gnu.org>
+
+ * calls.c (load_register_parameters): Move check for zero
+ sized items so that only the call to
+ mem_overlaps_already_clobbered_arg_p () is protected.
+
2010-07-22 Jan Hubicka <jh@suse.cz>
* ipa-pure-const.c (varying_state): Break out from ...
emit_move_insn (gen_rtx_REG (word_mode, REGNO (reg) + j),
args[i].aligned_regs[j]);
- else if ((partial == 0 || args[i].pass_on_stack)
- && size != 0)
+ else if (partial == 0 || args[i].pass_on_stack)
{
rtx mem = validize_mem (args[i].value);
- /* Check for overlap with already clobbered argument area. */
+ /* Check for overlap with already clobbered argument area,
+ providing that this has non-zero size. */
if (is_sibcall
- && mem_overlaps_already_clobbered_arg_p (XEXP (args[i].value, 0),
- size))
+ && (size == 0
+ || mem_overlaps_already_clobbered_arg_p
+ (XEXP (args[i].value, 0), size)))
*sibcall_failure = 1;
/* Handle a BLKmode that needs shifting. */