1 // RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm-only -O3 2 3 // Check that we don't assert on this case. 4 namespace Test1 { 5 6 struct Incomplete; 7 8 struct A { 9 virtual void f(); 10 virtual void g(Incomplete); 11 virtual void h(); 12 virtual void i(); 13 int a; 14 }; 15 16 struct B { 17 virtual void f(); 18 virtual void g(Incomplete); 19 virtual void h(); 20 virtual void i(); 21 int b; 22 }; 23 24 struct 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 h()33void C::h() { } 34 C()35C::C() { } 36 i()37void C::i() { } 38 39 } 40 41 namespace Test2 { 42 43 struct A { 44 virtual void f(); 45 int a; 46 }; 47 48 struct B { 49 virtual void f(); 50 int b; 51 }; 52 53 struct C : A, B { 54 virtual void f(); 55 }; 56 f(B * b)57static void f(B* b) { 58 b->f(); 59 } 60 61 } 62 63 // Test that we don't assert. 64 namespace Test3 { 65 66 struct A { 67 virtual ~A(); 68 69 int a; 70 }; 71 72 struct B : A { }; 73 struct C : virtual B { }; 74 f()75void f() { 76 C c; 77 } 78 79 } 80