1 /* { dg-do compile } */
2 /* { dg-additional-options "-O2 -fdump-ipa-icf" } */
3
4 /* Picking 'main' as a candiate target for equivalent functios is not a
5 good idea. */
6
7 int baz (int);
8
foo()9 int foo ()
10 {
11 return baz (baz (0));
12 }
13
14
main()15 int main ()
16 {
17 return baz (baz (0));
18 }
19
20 /* Notice the two functions are the same. */
21 /* { dg-final { scan-ipa-dump "Semantic equality hit:foo->main" "icf" } } */
22
23 /* Make sure we don't tail call main. */
24 /* { dg-final { scan-ipa-dump-not "= main \\(\\);" "icf" } } */
25
26 /* Make sure we tail call foo. */
27 /* { dg-final { scan-ipa-dump "= foo \\(\\);" "icf" } } */
28