1 /* { dg-do compile } */
2 /* { dg-options "-O3 -fdump-tree-local-pure-const1 -fdump-ipa-pure-const -fdump-tree-optimized -fno-early-inlining" } */
6 __attribute__ ((noinline
, noclone
))
15 __attribute__ ((noinline
, noclone
))
22 __attribute__ ((noinline
, noclone
))
30 call_callback(int (*fn
)(int), int a
)
35 __attribute__ ((noinline
, noclone
))
38 return call_callback (call_me
, a
);
41 __attribute__ ((noinline
))
48 __attribute__ ((noinline
, noclone
))
69 /* { dg-final { scan-tree-dump-times "i_am_pure1 .5" 1 "optimized"} } */
70 /* { dg-final { scan-tree-dump-times "i_am_const2 .5" 1 "optimized"} } */
71 /* { dg-final { scan-tree-dump-times "i_am_const3 .5" 1 "optimized"} } */
72 /* { dg-final { scan-tree-dump-times "i_am_pure4 .5" 1 "optimized"} } */
73 /* { dg-final { scan-tree-dump "found to be looping pure: i_am_pure1" "local-pure-const1"} } */
74 /* { dg-final { scan-tree-dump "found to be looping pure: i_am_pure4" "local-pure-const1"} } */
75 /* { dg-final { scan-ipa-dump "found to be const: i_am_const2" "pure-const"} } */
76 /* { dg-final { scan-ipa-dump "found to be const: i_am_const3" "pure-const"} } */
77 /* { dg-final { cleanup-tree-dump "local-pure-const1" } } */
78 /* { dg-final { cleanup-tree-dump "optimized" } } */
79 /* { dg-final { cleanup-ipa-dump "pure-const" } } */