annotate gcc/testsuite/g++.dg/ipa/devirt-44.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
kono
parents:
diff changeset
2 /* { dg-options "-O3 -fno-ipa-cp -fdump-ipa-inline-details -fno-early-inlining" } */
kono
parents:
diff changeset
3 struct A {
kono
parents:
diff changeset
4 virtual int foo () {return 1;}
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
5 void wrapfoo () {foo();}
111
kono
parents:
diff changeset
6 A() {wrapfoo();}
kono
parents:
diff changeset
7 };
kono
parents:
diff changeset
8 struct B:A {virtual int foo () {return 2;}};
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 void dostuff(struct A *);
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 static void
kono
parents:
diff changeset
13 test (struct A *a)
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 dostuff (a);
kono
parents:
diff changeset
16 if (a->foo ()!= 2)
kono
parents:
diff changeset
17 __builtin_abort ();
kono
parents:
diff changeset
18 }
kono
parents:
diff changeset
19
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
20 int main()
111
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 struct B a;
kono
parents:
diff changeset
23 dostuff (&a);
kono
parents:
diff changeset
24 test (&a);
kono
parents:
diff changeset
25 }
kono
parents:
diff changeset
26 /* Here one invocation of foo is while type is in construction, while other is not.
kono
parents:
diff changeset
27 Check that we handle that. */
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 /* { dg-final { scan-ipa-dump "Second type is base of first" "inline" } } */
kono
parents:
diff changeset
30 /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*A::foo" 1 "inline" } } */
kono
parents:
diff changeset
31 /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*B::foo" 1 "inline" } } */