1 /* { dg-do compile } */
2 /* { dg-options "-Os -fipa-cp -fdump-ipa-cp -fno-early-inlining -fdump-tree-optimized -fno-ipa-icf"  } */
3 
4 int array[100];
5 
6 int t(int);
7 
8 static int
i_can_be_propagated_fully(int * a)9 i_can_be_propagated_fully (int *a)
10 {
11   int i;
12   for (i=0;i<50;i++)
13   {
14     t(a[i]);
15     t(a[i+1]);
16     t(a[i+2]);
17     t(a[i+3]);
18   }
19 }
20 static int
i_can_be_propagated_fully2(int * a)21 i_can_be_propagated_fully2 (int *a)
22 {
23   i_can_be_propagated_fully (a);
24   i_can_be_propagated_fully (a);
25   i_can_be_propagated_fully (a);
26 }
27 static int
i_can_not_be_propagated_fully(int * a)28 i_can_not_be_propagated_fully (int *a)
29 {
30   int i;
31   for (i=0;i<50;i++)
32   {
33     t(a[i]);
34     t(a[i+1]);
35     t(a[i+2]);
36     t(a[i+3]);
37   }
38 }
39 int
i_can_not_be_propagated_fully2(int * a)40 i_can_not_be_propagated_fully2 (int *a)
41 {
42   i_can_not_be_propagated_fully (a);
43   i_can_not_be_propagated_fully (a);
44   i_can_not_be_propagated_fully (a);
45 }
46 int
main()47 main()
48 {
49   i_can_be_propagated_fully2 (array);
50   i_can_be_propagated_fully2 (array);
51   i_can_not_be_propagated_fully2 (array);
52   i_can_not_be_propagated_fully2 (array);
53 }
54 
55 /* { dg-final { scan-ipa-dump-times "Creating a specialized node of i_can_be_propagated_fully2" 1 "cp"  } } */
56 /* { dg-final { scan-ipa-dump-times "Creating a specialized node of i_can_be_propagated_fully/" 1 "cp"  } } */
57 /* { dg-final { scan-ipa-dump-not "Creating a specialized node of i_can_not_be_propagated_fully2" "cp"  } } */
58 /* { dg-final { scan-ipa-dump-not "Creating a specialized node of i_can_not_be_propagated_fully/" "cp"  } } */
59 /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully " "optimized"  } } */
60 /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully2 " "optimized"  } } */
61