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. 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 61} 62 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} 80