Commit 1696785e by Richard Henderson Committed by Richard Henderson

sibcall.c (optimize_sibling_and_tail_recursive_call): Suppress optimization if…

sibcall.c (optimize_sibling_and_tail_recursive_call): Suppress optimization if current_function_calls_setjmp.

        * sibcall.c (optimize_sibling_and_tail_recursive_call): Suppress
        optimization if current_function_calls_setjmp.

From-SVN: r42880
parent 2846f342
2001-06-04 Richard Henderson <rth@redhat.com>
* sibcall.c (optimize_sibling_and_tail_recursive_call): Suppress
optimization if current_function_calls_setjmp.
2001-06-04 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/c-tree.texi: Fix documentation of TREE_STRING_LENGTH for
......
......@@ -617,11 +617,15 @@ optimize_sibling_and_tail_recursive_calls ()
/* See if there are any reasons we can't perform either sibling or
tail call optimizations. We must be careful with stack slots
which are live at potential optimization sites. ?!? The first
which are live at potential optimization sites. ??? The first
test is overly conservative and should be replaced. */
if (frame_offset
/* Can't take address of local var if used by recursive call. */
|| current_function_uses_addressof
/* Any function that calls setjmp might have longjmp called from
any called function. ??? We really should represent this
properly in the CFG so that this needn't be special cased. */
|| current_function_calls_setjmp
/* Can't if more than one successor or single successor is not
exit block. These two tests prevent tail call optimization
in the presense of active exception handlers. */
......
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