OSDN Git Service

* sibcall.c (optimize_sibling_and_tail_recursive_call): Also remove
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Sep 2002 00:10:10 +0000 (00:10 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Sep 2002 00:10:10 +0000 (00:10 +0000)
        RTX_UNCHANGING_P markers for successful tail-recursive replacement.

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

gcc/ChangeLog
gcc/sibcall.c

index 7358c1c..10414c8 100644 (file)
@@ -1,5 +1,10 @@
 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.
 
 2002-09-19  Alan Modra  <amodra@bigpond.net.au>
index d13f3a9..4073e7c 100644 (file)
@@ -574,8 +574,8 @@ optimize_sibling_and_tail_recursive_calls ()
   rtx insn, insns;
   basic_block alternate_exit = EXIT_BLOCK_PTR;
   bool no_sibcalls_this_function = false;
-  int successful_sibling_call = 0;
-  int replaced_call_placeholder = 0;
+  bool successful_replacement = false;
+  bool replaced_call_placeholder = false;
   edge e;
 
   insns = get_insns ();
@@ -704,10 +704,11 @@ optimize_sibling_and_tail_recursive_calls ()
          /* Select a set of insns to implement the call and emit them.
             Tail recursion is the most efficient, so select it over
             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,
                                    tailrecursion != 0
                                      ? sibcall_use_tail_recursion
@@ -717,7 +718,7 @@ optimize_sibling_and_tail_recursive_calls ()
        }
     }
 
-  if (successful_sibling_call)
+  if (successful_replacement)
     {
       rtx insn;
       tree arg;