Merge from trunk
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / devirt-27.C
blob1dcf76cc3c14a76a9c553a9a0885dd05dc532602
1 /* { dg-do compile } */
2 /* { dg-options "-O3 -fdump-ipa-devirt -fdump-tree-optimized"  } */
3 struct A
4  {
5    int a;
6  };
7 struct B
8  {
9   __attribute__ ((visibility("default")))
10    virtual int foo(void) {return 42;}
11    int b;
12  };
13 struct C: A,B
14  {
15   __attribute__ ((visibility("hidden")))
16    virtual int foo(void);
17  };
19 struct C c;
20 int test(void)
22   struct C *d=&c;
23   struct B *b=d;
24   return d->foo()+b->foo();
26 /* { dg-final { scan-tree-dump "OBJ_TYPE_REF" "optimized"  } } */
27 /* { dg-final { cleanup-tree-dump "optimized" } } */