1 /* { dg-do compile { target nonpic } } */ 2 /* { dg-options "-O3 -fdump-tree-fnsplit -fdump-tree-optimized --param=builtin-expect-probability=100" } */ 3 4 struct a {int a,b;}; 5 struct a make_me_big (int a); split_me(int a)6struct a split_me (int a) 7 { 8 struct a retval; 9 if (__builtin_expect (a!=0,1)) 10 { 11 retval.a = 0; 12 retval.b = 0; 13 return retval; 14 } 15 else 16 { 17 struct a retval = make_me_big (a); 18 retval = make_me_big (a); 19 retval = make_me_big (a); 20 retval = make_me_big (a); 21 retval = make_me_big (a); 22 retval = make_me_big (a); 23 retval = make_me_big (a); 24 retval = make_me_big (a); 25 retval = make_me_big (a); 26 retval = make_me_big (a); 27 retval = make_me_big (a); 28 retval = make_me_big (a); 29 retval = make_me_big (a); 30 retval = make_me_big (a); 31 retval = make_me_big (a); 32 retval = make_me_big (a); 33 retval = make_me_big (a); 34 retval = make_me_big (a); 35 retval = make_me_big (a); 36 retval = make_me_big (a); 37 retval = make_me_big (a); 38 retval = make_me_big (a); 39 retval = make_me_big (a); 40 return retval; 41 } 42 } 43 int val; 44 void test()45test() 46 { 47 split_me (val); 48 split_me (val); 49 split_me (val); 50 split_me (val); 51 } 52 /* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */ 53 /* { dg-final { scan-tree-dump "part" "optimized"} } */ 54