1 // RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
2 
3 struct A {
4   virtual ~A();
5 };
6 
7 struct B : A { };
8 
9 struct C {
10   int i;
11   B b;
12 };
13 
14 // CHECK: _Z15test_value_initv
15 void 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
21   // CHECK: call void @llvm.memset.p0i8.i64
22   // CHECK: call void @_ZN1BC1Ev
23   C c = { 17 } ;
24   // CHECK: call void @_ZN1CD1Ev
25 }
26 
27 enum enum_type { negative_number = -1, magic_number = 42 };
28 
29 class enum_holder
30 {
31   enum_type m_enum;
32 
33 public:
34   enum_holder() : m_enum(magic_number) { }
35 };
36 
37 struct enum_holder_and_int
38 {
39   enum_holder e;
40   int i;
41 };
42 
43 // CHECK: _Z24test_enum_holder_and_intv()
44 void 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 }
52