/* PR tree-optimization/89060 */ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-tailc" } */ /* { dg-final { scan-tree-dump-not "baz \\\(1\\\); \\\[tail call\\\]" "tailc" } } */ /* { dg-final { scan-tree-dump "baz \\\(2\\\); \\\[tail call\\\]" "tailc" } } */ /* { dg-final { scan-tree-dump "baz \\\(3\\\); \\\[tail call\\\]" "tailc" } } */ /* { dg-final { scan-tree-dump "baz \\\(4\\\); \\\[tail call\\\]" "tailc" } } */ /* { dg-final { scan-tree-dump-not "baz \\\(5\\\); \\\[tail call\\\]" "tailc" } } */ void qux (char *, int n); int baz (int); int foo (int n) { char buf[64]; qux (buf, n); return baz (1); } int bar (int n) { { char buf[64]; qux (buf, n); } return baz (2); } int quux (int n) { if (n < 10) { { char buf[64]; qux (buf, n); } return baz (3); } if (n > 20) { { char buf2[64]; qux (buf2, n + 1); } return baz (4); } char buf3[64]; qux (buf3, n + 2); return baz (5); }