// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm-only -O3 | |
// 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(); | |
} | |
} | |
// 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; | |
} | |
} |