1 /* Verify that indirect inlining can also remove references of the functions it
2 discovers calls for, even when nodes being inlined are virtual IPA-CP
4 /* { dg-do compile } */
5 /* { dg-options "-O3 -fno-early-inlining -fdump-ipa-cp-details -fdump-ipa-inline -fdump-tree-optimized -fno-ipa-icf" } */
10 void __attribute__ ((noinline
, noclone
, used
))
16 int __attribute__ ((noinline
,noclone
)) get_input(void)
32 /* Some stuff to make the function bigger so that hip1_1 gets inlined
34 for (i
= 0; i
< get_input (); i
++)
66 /* Some stuff to make the function bigger so that hip2_2 gets inlined
68 for (i
= 0; i
< get_input (); i
++)
76 main (int argc
, int *argv
[])
80 for (i
= 0; i
< get_input (); i
++)
88 /* { dg-final { scan-ipa-dump-times "removing its cloning-created reference" 2 "cp" } } */
89 /* { dg-final { scan-ipa-dump "ipa-prop: Removed a reference" "inline" } } */
90 /* { dg-final { scan-ipa-dump-times "ipa-prop: Removing cloning-created reference" 2 "inline" } } */
91 /* { dg-final { scan-tree-dump-not "hooray" "optimized" } } */