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 
do_something(int size)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
main()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" } } */
39