111
|
1 /* We shall devirtualize to unreachable. No anonymous type method should surivve
|
|
2 reachability. */
|
|
3 /* { dg-do compile } */
|
|
4 /* { dg-options "-O2 -fdump-tree-ssa" } */
|
|
5 namespace {
|
|
6 class B {
|
|
7 public:
|
|
8 virtual int foo(void)
|
|
9 {
|
|
10 return 0;
|
|
11 }
|
|
12 };
|
|
13 class A : public B {
|
|
14 public:
|
|
15 virtual int foo(void)
|
|
16 {
|
|
17 return 1;
|
|
18 }
|
|
19 };
|
|
20 }
|
|
21 class B *b;
|
131
|
22 int main()
|
111
|
23 {
|
|
24 if (0)
|
|
25 {
|
|
26 class A a;
|
|
27 a.foo();
|
|
28 class B b;
|
|
29 b.foo();
|
|
30 }
|
|
31 return b->foo();
|
|
32 }
|
|
33
|
|
34 /* { dg-final { scan-tree-dump-not "A::foo" "ssa"} } */
|
|
35 /* { dg-final { scan-tree-dump-not "B::foo" "ssa"} } */
|
|
36 /* { dg-final { scan-tree-dump "builtin_unreachable" "ssa"} } */
|