OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2007-02-15 Paolo Bonzini <bonzini@gnu.org>
[pf3gnuchains/gcc-fork.git]
/
gcc
/
caller-save.c
diff --git
a/gcc/caller-save.c
b/gcc/caller-save.c
index
54f88a1
..
4acb912
100644
(file)
--- a/
gcc/caller-save.c
+++ b/
gcc/caller-save.c
@@
-407,7
+407,9
@@
save_call_clobbered_regs (void)
regno += insert_restore (chain, 1, regno, MOVE_MAX_WORDS, save_mode);
}
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;
{
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);
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);
/* Compute which hard regs must be saved before this call. */
AND_COMPL_HARD_REG_SET (hard_regs_to_save, call_fixed_reg_set);