xref: /aosp_15_r20/external/clang/test/Rewriter/blockcast3.mm (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -E %s -o %t.mm
2*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %t.mm -o %t-rw.cpp
3*67e74705SXin Li// RUN: FileCheck -check-prefix CHECK-LP --input-file=%t-rw.cpp %s
4*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o %t-modern-rw.cpp
5*67e74705SXin Li// RUN: FileCheck -check-prefix CHECK-LP --input-file=%t-modern-rw.cpp %s
6*67e74705SXin Li// radar 7607781
7*67e74705SXin Li
8*67e74705SXin Litypedef struct {
9*67e74705SXin Li	int a;
10*67e74705SXin Li	int b;
11*67e74705SXin Li} mystruct;
12*67e74705SXin Li
13*67e74705SXin Livoid g(int (^block)(mystruct s)) {
14*67e74705SXin Li	mystruct x;
15*67e74705SXin Li	int v = block(x);
16*67e74705SXin Li}
17*67e74705SXin Li
18*67e74705SXin Livoid f(const void **arg) {
19*67e74705SXin Li	__block const void **q = arg;
20*67e74705SXin Li	g(^(mystruct s){
21*67e74705SXin Li		*q++ = (void*)s.a;
22*67e74705SXin Li		return 314;
23*67e74705SXin Li		});
24*67e74705SXin Li}
25*67e74705SXin Li
26*67e74705SXin Li// CHECK-LP: (__Block_byref_q_0 *)&q
27