aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Sandoe <iains@gcc.gnu.org>2010-07-22 07:59:50 +0000
committerIain Sandoe <iains@gcc.gnu.org>2010-07-22 07:59:50 +0000
commit3b2ee1701fcfc7792a2348779f1578717e1f6efd (patch)
treed5a7aac058fe24a7a3091459f9aaa86623734185
parent20b3c24c86e28279acdb1038fe186f93a92d111b (diff)
downloadgcc-3b2ee1701fcfc7792a2348779f1578717e1f6efd.zip
gcc-3b2ee1701fcfc7792a2348779f1578717e1f6efd.tar.gz
gcc-3b2ee1701fcfc7792a2348779f1578717e1f6efd.tar.bz2
calls.c (load_register_parameters): Move check for zero sized items so that only the call to ...
* 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. From-SVN: r162402
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/calls.c11
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5e78b4b..c322ff3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+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 ...
diff --git a/gcc/calls.c b/gcc/calls.c
index 7377109..cd0d9c5 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1668,15 +1668,16 @@ load_register_parameters (struct arg_data *args, int num_actuals,
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. */