diff options
Diffstat (limited to 'gcc/sibcall.c')
| -rw-r--r-- | gcc/sibcall.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/sibcall.c b/gcc/sibcall.c index bbb7024..1a3a310 100644 --- a/gcc/sibcall.c +++ b/gcc/sibcall.c @@ -140,9 +140,13 @@ skip_copy_to_return_value (orig_insn, hardret, softret) called function's return value was copied. Otherwise we're returning some other value. */ +#ifndef OUTGOING_REGNO +#define OUTGOING_REGNO(N) (N) +#endif + if (SET_DEST (set) == current_function_return_rtx && REG_P (SET_DEST (set)) - && REGNO (SET_DEST (set)) == REGNO (hardret) + && OUTGOING_REGNO (REGNO (SET_DEST (set))) == REGNO (hardret) && SET_SRC (set) == softret) return insn; @@ -353,7 +357,6 @@ replace_call_placeholder (insn, use) NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED; } - /* Given a (possibly empty) set of potential sibling or tail recursion call sites, determine if optimization is possible. |
