blob: ec1f8263e41ac34bcb1793237d6b230c839ab09f [file] [log] [blame]
Douglas Gregor4f4b1862009-12-16 18:50:27 +00001// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2
3struct A {
4 virtual ~A();
5};
6
7struct B : A { };
8
9struct C {
10 int i;
11 B b;
12};
13
14// CHECK: _Z15test_value_initv
15void test_value_init() {
16 // This value initialization requires zero initialization of the 'B'
17 // subobject followed by a call to its constructor.
18 // PR5800
19
20 // CHECK: store i32 17
Mon P Wangcc2ab0c2010-04-04 03:10:52 +000021 // CHECK: call void @llvm.memset.p0i8.i64
Douglas Gregor8cdc2e02009-12-16 19:18:40 +000022 // CHECK: call void @_ZN1BC1Ev
Douglas Gregor4f4b1862009-12-16 18:50:27 +000023 C c = { 17 } ;
Douglas Gregor8cdc2e02009-12-16 19:18:40 +000024 // CHECK: call void @_ZN1CD1Ev
Douglas Gregor4f4b1862009-12-16 18:50:27 +000025}
Douglas Gregor199db362010-04-27 20:36:09 +000026
27enum enum_type { negative_number = -1, magic_number = 42 };
28
29class enum_holder
30{
31 enum_type m_enum;
32
33public:
34 enum_holder() : m_enum(magic_number) { }
35};
36
37struct enum_holder_and_int
38{
39 enum_holder e;
40 int i;
41};
42
43// CHECK: _Z24test_enum_holder_and_intv()
44void test_enum_holder_and_int() {
45 // CHECK: alloca
46 // CHECK-NEXT: bitcast
47 // CHECK-NEXT: call void @llvm.memset
48 // CHECK-NEXT: call void @_ZN19enum_holder_and_intC1Ev
49 enum_holder_and_int();
50 // CHECK-NEXT: ret void
51}
John McCall7cd1d972010-08-07 08:21:30 +000052
53// PR7834: don't crash.
54namespace test1 {
55 struct A {
56 int A::*f;
57 A();
58 A(const A&);
59 A &operator=(const A &);
60 };
61
62 struct B {
63 A base;
64 };
65
66 void foo() {
67 B();
68 }
69}