blob: 01e494717ebf899ba93adf75d8fe5f12b274f28f [file] [log] [blame]
Rafael Espindolaee6aa0c2013-09-03 21:05:13 +00001// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm-only -O3
Anders Carlsson8b021832011-02-06 18:31:40 +00002
3// Check that we don't assert on this case.
4namespace Test1 {
5
6struct Incomplete;
7
8struct A {
9 virtual void f();
10 virtual void g(Incomplete);
11 virtual void h();
12 virtual void i();
13 int a;
14};
15
16struct B {
17 virtual void f();
18 virtual void g(Incomplete);
19 virtual void h();
20 virtual void i();
21 int b;
22};
23
24struct C : A, B {
25 C();
26
27 virtual void f();
28 virtual void g(Incomplete);
29 virtual void h();
30 virtual void i();
31};
32
33void C::h() { }
34
35C::C() { }
36
37void C::i() { }
38
39}
40
41namespace Test2 {
42
43struct A {
44 virtual void f();
45 int a;
46};
47
48struct B {
49 virtual void f();
50 int b;
51};
52
53struct C : A, B {
54 virtual void f();
55};
56
57static void f(B* b) {
58 b->f();
59}
60
Anders Carlsson8b021832011-02-06 18:31:40 +000061}
Anders Carlssone866d442011-02-06 20:09:44 +000062
63// Test that we don't assert.
64namespace Test3 {
65
66struct A {
67 virtual ~A();
68
69 int a;
70};
71
72struct B : A { };
73struct C : virtual B { };
74
75void f() {
76 C c;
77}
78
79}