OSDN Git Service

* calls.c (expand_call): Don't disable tail recursion based
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Nov 2000 19:34:59 +0000 (19:34 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Nov 2000 19:34:59 +0000 (19:34 +0000)
        on the loop nest.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37822 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/calls.c

index e471fe3..d988b9c 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-28  Jan Hubicka  <jh@suse.cz>
+
+       * calls.c (expand_call): Don't disable tail recursion based
+       on the loop nest.
+
 2000-11-28  Neil Booth  <neilb@earthling.net>
 
         * tradcpp.c (enum node_type): New hash types T_ASSERT, T_UNASSERT.
index 14c10b0..ad79078 100644 (file)
@@ -2416,9 +2416,8 @@ expand_call (exp, target, ignore)
 
   /* Tail calls can make things harder to debug, and we're traditionally
      pushed these optimizations into -O2.  Don't try if we're already
-     expanding a call, as that means we're an argument.  Similarly, if
-     there's pending loops or cleanups we know there's code to follow
-     the call.
+     expanding a call, as that means we're an argument.  Don't try if
+     there's cleanups, as we know there's code to follow the call.
 
      If rtx_equal_function_value_matters is false, that means we've
      finished with regular parsing.  Which means that some of the
@@ -2429,7 +2428,6 @@ expand_call (exp, target, ignore)
   if (currently_expanding_call++ != 0
       || !flag_optimize_sibling_calls
       || !rtx_equal_function_value_matters
-      || !stmt_loop_nest_empty ()
       || any_pending_cleanups (1)
       || args_size.var)
     try_tail_call = try_tail_recursion = 0;