OSDN Git Service

2007-02-15 Paolo Bonzini <bonzini@gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / caller-save.c
index 54f88a1..4acb912 100644 (file)
@@ -407,7 +407,9 @@ save_call_clobbered_regs (void)
                  regno += insert_restore (chain, 1, regno, MOVE_MAX_WORDS, save_mode);
            }
 
-         if (code == CALL_INSN && ! find_reg_note (insn, REG_NORETURN, NULL))
+         if (code == CALL_INSN
+             && ! SIBLING_CALL_P (insn)
+             && ! find_reg_note (insn, REG_NORETURN, NULL))
            {
              unsigned regno;
              HARD_REG_SET hard_regs_to_save;
@@ -450,11 +452,6 @@ save_call_clobbered_regs (void)
                 during the call, but the subreg that is set isn't.  */
              CLEAR_HARD_REG_SET (this_insn_sets);
              note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets);
-             /* Sibcalls are considered to set the return value,
-                compare flow.c:propagate_one_insn.  */
-             if (SIBLING_CALL_P (insn) && current_function_return_rtx)
-               mark_set_regs (current_function_return_rtx, NULL_RTX,
-                              &this_insn_sets);
 
              /* Compute which hard regs must be saved before this call.  */
              AND_COMPL_HARD_REG_SET (hard_regs_to_save, call_fixed_reg_set);