Commit 2c67b7c6 by Richard Henderson Committed by Richard Henderson

sibcall.c (optimize_sibling_and_tail_recursive_call): Also remove…

sibcall.c (optimize_sibling_and_tail_recursive_call): Also remove RTX_UNCHANGING_P markers for successful tail-recursive replacement.

        * sibcall.c (optimize_sibling_and_tail_recursive_call): Also remove
        RTX_UNCHANGING_P markers for successful tail-recursive replacement.

From-SVN: r57290
parent 15769ca3
2002-09-18 Richard Henderson <rth@redhat.com> 2002-09-18 Richard Henderson <rth@redhat.com>
* sibcall.c (optimize_sibling_and_tail_recursive_call): Also remove
RTX_UNCHANGING_P markers for successful tail-recursive replacement.
2002-09-18 Richard Henderson <rth@redhat.com>
* real.c (round_for_format): Collect sticky as unsigned long, not bool. * real.c (round_for_format): Collect sticky as unsigned long, not bool.
2002-09-19 Alan Modra <amodra@bigpond.net.au> 2002-09-19 Alan Modra <amodra@bigpond.net.au>
...@@ -574,8 +574,8 @@ optimize_sibling_and_tail_recursive_calls () ...@@ -574,8 +574,8 @@ optimize_sibling_and_tail_recursive_calls ()
rtx insn, insns; rtx insn, insns;
basic_block alternate_exit = EXIT_BLOCK_PTR; basic_block alternate_exit = EXIT_BLOCK_PTR;
bool no_sibcalls_this_function = false; bool no_sibcalls_this_function = false;
int successful_sibling_call = 0; bool successful_replacement = false;
int replaced_call_placeholder = 0; bool replaced_call_placeholder = false;
edge e; edge e;
insns = get_insns (); insns = get_insns ();
...@@ -704,10 +704,11 @@ optimize_sibling_and_tail_recursive_calls () ...@@ -704,10 +704,11 @@ optimize_sibling_and_tail_recursive_calls ()
/* Select a set of insns to implement the call and emit them. /* Select a set of insns to implement the call and emit them.
Tail recursion is the most efficient, so select it over Tail recursion is the most efficient, so select it over
a tail/sibling call. */ a tail/sibling call. */
if (sibcall)
successful_sibling_call = 1;
replaced_call_placeholder = 1; if (sibcall || tailrecursion)
successful_replacement = true;
replaced_call_placeholder = true;
replace_call_placeholder (insn, replace_call_placeholder (insn,
tailrecursion != 0 tailrecursion != 0
? sibcall_use_tail_recursion ? sibcall_use_tail_recursion
...@@ -717,7 +718,7 @@ optimize_sibling_and_tail_recursive_calls () ...@@ -717,7 +718,7 @@ optimize_sibling_and_tail_recursive_calls ()
} }
} }
if (successful_sibling_call) if (successful_replacement)
{ {
rtx insn; rtx insn;
tree arg; tree arg;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment