Mercurial > hg > CbC > CbC_llvm
comparison clang/test/CodeGenObjC/block-6.m @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | c4bab56944e8 |
children |
comparison
equal
deleted
inserted
replaced
237:c80f45b162ad | 252:1f2b6ac9f198 |
---|---|
1 // RUN: %clang_cc1 -no-opaque-pointers %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s | 1 // RUN: %clang_cc1 %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s |
2 // rdar://8893785 | 2 // rdar://8893785 |
3 | 3 |
4 void MYFUNC(void) { | 4 void MYFUNC(void) { |
5 // CHECK-LABEL: define{{.*}} void @MYFUNC() | 5 // CHECK-LABEL: define{{.*}} void @MYFUNC() |
6 // CHECK: [[OBSERVER_SLOT:%.*]] = alloca [[OBSERVER_T:%.*]], align 8 | 6 // CHECK: [[OBSERVER_SLOT:%.*]] = alloca [[OBSERVER_T:%.*]], align 8 |
7 // CHECK: [[BLOCK:%.*]] = alloca <{ | |
7 | 8 |
8 // CHECK: [[T0:%.*]] = getelementptr inbounds [[OBSERVER_T]], [[OBSERVER_T]]* [[OBSERVER_SLOT]], i32 0, i32 1 | 9 // CHECK: [[T0:%.*]] = getelementptr inbounds [[OBSERVER_T]], ptr [[OBSERVER_SLOT]], i32 0, i32 1 |
9 // CHECK: store [[OBSERVER_T]]* [[OBSERVER_SLOT]], [[OBSERVER_T]]** [[T0]] | 10 // CHECK: store ptr [[OBSERVER_SLOT]], ptr [[T0]] |
10 | 11 |
11 // CHECK: [[T1:%.*]] = bitcast i8* ()* | 12 // CHECK: [[FORWARDING:%.*]] = getelementptr inbounds [[OBSERVER_T]], ptr [[OBSERVER_SLOT]], i32 0, i32 1 |
12 // CHECK: [[FORWARDING:%.*]] = getelementptr inbounds [[OBSERVER_T]], [[OBSERVER_T]]* [[OBSERVER_SLOT]], i32 0, i32 1 | 13 // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[FORWARDING]] |
13 // CHECK-NEXT: [[T0:%.*]] = load [[OBSERVER_T]]*, [[OBSERVER_T]]** [[FORWARDING]] | 14 // CHECK-NEXT: [[OBSERVER:%.*]] = getelementptr inbounds [[OBSERVER_T]], ptr [[T0]], i32 0, i32 6 |
14 // CHECK-NEXT: [[OBSERVER:%.*]] = getelementptr inbounds [[OBSERVER_T]], [[OBSERVER_T]]* [[T0]], i32 0, i32 6 | 15 // CHECK-NEXT: store ptr [[BLOCK]], ptr [[OBSERVER]] |
15 // CHECK-NEXT: store i8* [[T1]], i8** [[OBSERVER]] | |
16 __block id observer = ^{ return observer; }; | 16 __block id observer = ^{ return observer; }; |
17 } | 17 } |
18 | 18 |