]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/pr89060.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / pr89060.c
1 /* PR tree-optimization/89060 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fdump-tree-tailc" } */
4 /* { dg-final { scan-tree-dump-not "baz \\\(1\\\); \\\[tail call\\\]" "tailc" } } */
5 /* { dg-final { scan-tree-dump "baz \\\(2\\\); \\\[tail call\\\]" "tailc" } } */
6 /* { dg-final { scan-tree-dump "baz \\\(3\\\); \\\[tail call\\\]" "tailc" } } */
7 /* { dg-final { scan-tree-dump "baz \\\(4\\\); \\\[tail call\\\]" "tailc" } } */
8 /* { dg-final { scan-tree-dump-not "baz \\\(5\\\); \\\[tail call\\\]" "tailc" } } */
9
10 void qux (char *, int n);
11 int baz (int);
12
13 int
14 foo (int n)
15 {
16 char buf[64];
17 qux (buf, n);
18 return baz (1);
19 }
20
21 int
22 bar (int n)
23 {
24 {
25 char buf[64];
26 qux (buf, n);
27 }
28 return baz (2);
29 }
30
31 int
32 quux (int n)
33 {
34 if (n < 10)
35 {
36 {
37 char buf[64];
38 qux (buf, n);
39 }
40 return baz (3);
41 }
42 if (n > 20)
43 {
44 {
45 char buf2[64];
46 qux (buf2, n + 1);
47 }
48 return baz (4);
49 }
50 char buf3[64];
51 qux (buf3, n + 2);
52 return baz (5);
53 }