[RISCV][FMV] Support target_clones (#85786)
[llvm-project.git] / clang / test / CodeGenObjC / nontrivial-c-struct-within-struct-name.m
blobc2a8ab88f2fda76aee85f243d9650407356587bf
1 // RUN: %clang_cc1 -triple arm64-apple-ios11 -fobjc-arc -emit-llvm -o - %s | FileCheck %s
3 @class I;
5 typedef struct {
6   I *name;
7 } Foo;
9 typedef struct {
10   Foo foo;
11 } Bar;
13 typedef struct {
14   Bar bar;
15 } Baz;
17 I *getI(void);
19 void f(void) {
20   Foo foo = {getI()};
21   Bar bar = {foo};
22   Baz baz = {bar};
25 // CHECK: define linkonce_odr hidden void @__destructor_8_S_S_s0(ptr noundef %[[DST:.*]])
26 // CHECK: %[[DST_ADDR:.*]] = alloca ptr, align 8
27 // CHECK: store ptr %[[DST]], ptr %[[DST_ADDR]], align 8
28 // CHECK: %[[V0:.*]] = load ptr, ptr %[[DST_ADDR]], align 8
29 // CHECK: call void @__destructor_8_S_s0(ptr %[[V0]])
30 // CHECK: ret void
32 // CHECK: define linkonce_odr hidden void @__destructor_8_S_s0(ptr noundef %[[DST:.*]])
33 // CHECK: %[[DST_ADDR:.*]] = alloca ptr, align 8
34 // CHECK: store ptr %[[DST]], ptr %[[DST_ADDR]], align 8
35 // CHECK: %[[V0:.*]] = load ptr, ptr %[[DST_ADDR]], align 8
36 // CHECK: call void @__destructor_8_s0(ptr %[[V0]])
37 // CHECK: ret void
39 // CHECK: define linkonce_odr hidden void @__destructor_8_s0(ptr noundef %dst)
40 // CHECK: %[[DST_ADDR:.*]] = alloca ptr, align 8
41 // CHECK: store ptr %[[DST]], ptr %[[DST_ADDR]], align 8
42 // CHECK: %[[V0:.*]] = load ptr, ptr %[[DST_ADDR]], align 8
43 // CHECK: call void @llvm.objc.storeStrong(ptr %[[V0]], ptr null)
44 // CHECK: ret void