diff options
author | Iain Sandoe <iains@gcc.gnu.org> | 2010-07-22 07:59:50 +0000 |
---|---|---|
committer | Iain Sandoe <iains@gcc.gnu.org> | 2010-07-22 07:59:50 +0000 |
commit | 3b2ee1701fcfc7792a2348779f1578717e1f6efd (patch) | |
tree | d5a7aac058fe24a7a3091459f9aaa86623734185 /gcc | |
parent | 20b3c24c86e28279acdb1038fe186f93a92d111b (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/calls.c | 11 |
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. */ |