// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s // Check that we don't assert on this case. namespace Test1 { struct Incomplete; struct A { virtual void f(); virtual void g(Incomplete); virtual void h(); virtual void i(); int a; }; struct B { virtual void f(); virtual void g(Incomplete); virtual void h(); virtual void i(); int b; }; struct C : A, B { C(); virtual void f(); virtual void g(Incomplete); virtual void h(); virtual void i(); }; void C::h() { } C::C() { } void C::i() { } } namespace Test2 { struct A { virtual void f(); int a; }; struct B { virtual void f(); int b; }; struct C : A, B { virtual void f(); }; static void f(B* b) { b->f(); } // CHECK: define void @_ZN5Test21fEv() // CHECK: call void @_ZN5Test21C1fEv // CHECK: ret void // CHECK: define available_externally void @_ZThn16_N5Test21C1fEv void f() { C c; f(&c); } } // Test that we don't assert. namespace Test3 { struct A { virtual ~A(); int a; }; struct B : A { }; struct C : virtual B { }; void f() { C c; } }