xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenObjC/block-6.m (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s
2*f4a2713aSLionel Sambuc// rdar://8893785
3*f4a2713aSLionel Sambuc
4*f4a2713aSLionel Sambucvoid MYFUNC() {
5*f4a2713aSLionel Sambuc// CHECK-LABEL:    define void @MYFUNC()
6*f4a2713aSLionel Sambuc// CHECK:      [[OBSERVER_SLOT:%.*]] = alloca [[OBSERVER_T:%.*]], align 8
7*f4a2713aSLionel Sambuc
8*f4a2713aSLionel Sambuc// CHECK:      [[T0:%.*]] = getelementptr inbounds [[OBSERVER_T]]* [[OBSERVER_SLOT]], i32 0, i32 1
9*f4a2713aSLionel Sambuc// CHECK:      store [[OBSERVER_T]]* [[OBSERVER_SLOT]], [[OBSERVER_T]]** [[T0]]
10*f4a2713aSLionel Sambuc
11*f4a2713aSLionel Sambuc// CHECK:      [[T1:%.*]] = bitcast i8* ()*
12*f4a2713aSLionel Sambuc// CHECK:      [[FORWARDING:%.*]] = getelementptr inbounds [[OBSERVER_T]]* [[OBSERVER_SLOT]], i32 0, i32 1
13*f4a2713aSLionel Sambuc// CHECK-NEXT: [[T0:%.*]] = load [[OBSERVER_T]]** [[FORWARDING]]
14*f4a2713aSLionel Sambuc// CHECK-NEXT: [[OBSERVER:%.*]] = getelementptr inbounds [[OBSERVER_T]]* [[T0]], i32 0, i32 6
15*f4a2713aSLionel Sambuc// CHECK-NEXT: store i8* [[T1]], i8** [[OBSERVER]]
16*f4a2713aSLionel Sambuc  __block id observer = ^{ return observer; };
17*f4a2713aSLionel Sambuc}
18*f4a2713aSLionel Sambuc
19