]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / inline-10.c
1 /* { dg-do compile } */
2 /* { dg-options "-Os -fdump-tree-optimized -fno-partial-inlining" } */
3 void do_something1(void);
4 void do_something2(void);
5 void do_something3(void);
6 void do_something4(void);
7 void do_something5(void);
8 void do_something_big(int);
9
10 int do_something (int size)
11 {
12 if (__builtin_constant_p (size))
13 switch (size)
14 {
15 case 1:do_something1 (); break;
16 case 2:do_something2 (); break;
17 case 5:do_something1 (); do_something1 ();
18 case 3:do_something3 (); break;
19 case 4:do_something4 (); break;
20 }
21 else
22 do_something_big (size);
23 }
24 extern int n;
25 int
26 main()
27 {
28 do_something (2);
29 do_something (3);
30 do_something (5);
31 do_something (70);
32 }
33 /* All calls should be inlined, except for do_something (5). */
34 /* { dg-final { scan-tree-dump-not "do_something1" "optimized" } } */
35 /* { dg-final { scan-tree-dump-times "do_something2" 1 "optimized" } } */
36 /* { dg-final { scan-tree-dump-times "do_something3" 1 "optimized" } } */
37 /* { dg-final { scan-tree-dump-times "do_something \\(5\\)" 1 "optimized" } } */
38 /* { dg-final { scan-tree-dump-not "do_something \\(70\\)" "optimized" } } */