comparison clang/test/CodeGenObjC/nontrivial-c-struct-within-struct-name.m @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children c4bab56944e8
comparison
equal deleted inserted replaced
147:c2174574ed3a 150:1d019706d866
1 // RUN: %clang_cc1 -triple arm64-apple-ios11 -fobjc-arc -emit-llvm -o - %s | FileCheck %s
2
3 @class I;
4
5 typedef struct {
6 I *name;
7 } Foo;
8
9 typedef struct {
10 Foo foo;
11 } Bar;
12
13 typedef struct {
14 Bar bar;
15 } Baz;
16
17 I *getI();
18
19 void f() {
20 Foo foo = {getI()};
21 Bar bar = {foo};
22 Baz baz = {bar};
23 }
24
25 // CHECK: define linkonce_odr hidden void @__destructor_8_S_S_s0(i8** %[[DST:.*]])
26 // CHECK: %[[DST_ADDR:.*]] = alloca i8**, align 8
27 // CHECK: store i8** %[[DST]], i8*** %[[DST_ADDR]], align 8
28 // CHECK: %[[V0:.*]] = load i8**, i8*** %[[DST_ADDR]], align 8
29 // CHECK: call void @__destructor_8_S_s0(i8** %[[V0]])
30 // CHECK: ret void
31
32 // CHECK: define linkonce_odr hidden void @__destructor_8_S_s0(i8** %[[DST:.*]])
33 // CHECK: %[[DST_ADDR:.*]] = alloca i8**, align 8
34 // CHECK: store i8** %[[DST]], i8*** %[[DST_ADDR]], align 8
35 // CHECK: %[[V0:.*]] = load i8**, i8*** %[[DST_ADDR]], align 8
36 // CHECK: call void @__destructor_8_s0(i8** %[[V0]])
37 // CHECK: ret void
38
39 // CHECK: define linkonce_odr hidden void @__destructor_8_s0(i8** %dst)
40 // CHECK: %[[DST_ADDR:.*]] = alloca i8**, align 8
41 // CHECK: store i8** %[[DST]], i8*** %[[DST_ADDR]], align 8
42 // CHECK: %[[V0:.*]] = load i8**, i8*** %[[DST_ADDR]], align 8
43 // CHECK: call void @llvm.objc.storeStrong(i8** %[[V0]], i8* null)
44 // CHECK: ret void