tree-tailcall.c (pass_tail_recursion): Use gate_tail_calls too.
authorEric Botcazou <ebotcazou@adacore.com>
Sun, 23 Apr 2006 18:14:13 +0000 (18:14 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sun, 23 Apr 2006 18:14:13 +0000 (18:14 +0000)
* tree-tailcall.c (pass_tail_recursion): Use gate_tail_calls too.

testsuite/
* gcc.dg/sibcall-7.c: New test.
* gcc.dg/tree-ssa/tailrecursion-1.c: Pass -foptimize-sibling-calls.
* gcc.dg/tree-ssa/tailrecursion-2.c: Likewise.
* gcc.dg/tree-ssa/tailrecursion-3.c: Likewise.
* gcc.dg/tree-ssa/tailrecursion-4.c: Likewise.
* gcc.dg/tree-ssa/tailrecursion-5.c: Likewise.

From-SVN: r113200

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/sibcall-7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c
gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c
gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c
gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c
gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
gcc/tree-tailcall.c

index 08fc7c0197e3851ffb93fc3c86bbe519c91f46c9..52485b6a60151f28e343efd2942cd13ba1abc613 100644 (file)
@@ -1,3 +1,7 @@
+2006-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-tailcall.c (pass_tail_recursion): Use gate_tail_calls too.
+
 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/26534
index f0c3a5d5e0a8337419f5797e0b6a459a0f81312d..7714bc2ee78d4e3dc298eda31f8f84f6c66bd10e 100644 (file)
@@ -1,3 +1,12 @@
+2006-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.dg/sibcall-7.c: New test.
+       * gcc.dg/tree-ssa/tailrecursion-1.c: Pass -foptimize-sibling-calls.
+       * gcc.dg/tree-ssa/tailrecursion-2.c: Likewise.
+       * gcc.dg/tree-ssa/tailrecursion-3.c: Likewise.
+       * gcc.dg/tree-ssa/tailrecursion-4.c: Likewise.
+       * gcc.dg/tree-ssa/tailrecursion-5.c: Likewise.
+
 2006-04-23  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/26534
diff --git a/gcc/testsuite/gcc.dg/sibcall-7.c b/gcc/testsuite/gcc.dg/sibcall-7.c
new file mode 100644 (file)
index 0000000..273c2c3
--- /dev/null
@@ -0,0 +1,43 @@
+/* Simple check that tail recursive call optimization is also
+   controlled by -foptimize-sibling-calls.
+
+   Copyright (C) 2006 Free Software Foundation Inc.
+   Original test by Hans-Peter Nilsson  <hp@bitrange.com>  */
+
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-optimize-sibling-calls" } */
+
+
+extern void abort (void);
+
+extern void recurser_void (int);
+extern void track (int);
+
+int main (void)
+{
+  recurser_void (0);
+  return 0;
+}
+
+void recurser_void (int n)
+{
+  if (n == 0 || n == 7)
+    track (n);
+
+  if (n == 10)
+    return;
+
+  recurser_void (n + 1);
+}
+
+void *trackpoint;
+
+void track (int n)
+{
+  char stackpos[1];
+
+  if (n == 0)
+    trackpoint = stackpos;
+  else if (n != 7 || trackpoint == stackpos)
+    abort ();
+}
index af65736661fbfd50ea97f0c99ff584f441263303..8802bc8bc69fa5f9d1b1f8758be41d6f612b32cf 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-tailr-details" } */
+/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */
 int
 t(int a)
 {
index d0bc8b9c23083d9c25ba8fbe1b4fd1130642f2b3..9fe3af9855ad202d8a60cbd6170aee194ebfc321 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-tailr-details" } */
+/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */
 int
 t(char *a)
 {
index 4e0ca133e5db8cff7c974774cb21f3f541e6df10..ca727df391d45f4541928bb5b4f8d51de1d3c932 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-tailr-details" } */
+/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */
 int
 t(int a)
 {
index edab9833f0ffcb97f7160229ccbed32d1b45f677..bb43d76aca9035d1be00a72b4ac10395db2a21a8 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-tailr-details" } */
+/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-tailr-details" } */
 int
 t(int a)
 {
index 2a0af0a714bd2a8da32c06c49a0647d0e7babd01..53a2cdb15e3647b604178731c489749bd5f0882f 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run } */
-/* { dg-options "-O1 -fdump-tree-optimized" } */
+/* { dg-options "-O1 -foptimize-sibling-calls -fdump-tree-optimized" } */
 
 extern void abort (void);
 extern void exit (int);
index bdc5c95de8849045fcd1ca2e7ae3df1409cc749a..fb9948e672d8c5a6ed2a45535589253f95610fee 100644 (file)
@@ -1017,7 +1017,7 @@ execute_tail_calls (void)
 struct tree_opt_pass pass_tail_recursion = 
 {
   "tailr",                             /* name */
-  NULL,                                        /* gate */
+  gate_tail_calls,                     /* gate */
   execute_tail_recursion,              /* execute */
   NULL,                                        /* sub */
   NULL,                                        /* next */