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)10int 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()26main() 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