]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
calls.c (load_register_parameters): Move check for zero sized items so that only...
authorIain Sandoe <iains@gcc.gnu.org>
Thu, 22 Jul 2010 07:59:50 +0000 (07:59 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Thu, 22 Jul 2010 07:59:50 +0000 (07:59 +0000)
* 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

gcc/ChangeLog
gcc/calls.c

index 5e78b4be22ab0cefba944bfa6eff0351a4ac282c..c322ff3c5c70944f01f02d0a866da796841dcf92 100644 (file)
@@ -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 ...
index 73771092a4887baf29d60966d7762209addc9ffa..cd0d9c593f3b54c821341fc02c75cf6fd0f12155 100644 (file)
@@ -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.  */