1 // RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
3 // CHECK: %"struct.rdar20621065::B" = type { float, float }
8 explicit A(unsigned a
= 0xffffffff) : a(a
) { }
14 B() : A(), Empty() { }
18 C() : A(), Empty() { }
19 C(const C
& other
) : A(0x12345678), Empty(other
) { }
23 D
& operator=(const D
& other
) {
25 Empty::operator=(other
);
31 #define CHECK(x) if (!(x)) return __LINE__
34 // CHECK-LABEL: define{{.*}} i32 @_Z1fv()
38 // Check that A::a is not overwritten by the Empty default constructor.
39 CHECK(b1
.a
== 0xffffffff);
44 // Check that A::a has the value set in the C::C copy constructor.
45 CHECK(c2
.a
== 0x12345678);
50 // Check that A::as has the value set in the D copy assignment operator.
51 CHECK(d2
.a
== 0x87654321);
72 extern "C" void printf(const char *, ...);
80 printf("test on line %d failed!\n", result
);
86 namespace rdar20621065
{
96 // Type checked at the top of the file.
100 // This test used to crash when CGRecordLayout::getNonVirtualBaseLLVMFieldNo was called.
101 namespace record_layout
{
111 struct X3
: X2
<int> {