1 // RUN: %clang_cc1 -x c -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
2 // RUN: FileCheck --input-file=%t-rw.cpp %s
3 // rdar://9006279
4 
5 void q(void (^p)(void)) {
6     p();
7 }
8 
f()9 void f() {
10     __block char BYREF_VAR_CHECK = 'a';
11     __block char d = 'd';
12     q(^{
13         q(^{
14             __block char e = 'e';
15             char l = 'l';
16             BYREF_VAR_CHECK = 'b';
17             d = 'd';
18             q(^{
19                  e = '1';
20                  BYREF_VAR_CHECK = '2';
21                  d = '3';
22                }
23              );
24         });
25     });
26 }
27 
main()28 int main() {
29     f();
30     return 0;
31 }
32 
33 // CHECK: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK
34 // CHECK: (__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK
35 // CHECK: (struct __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (struct __Block_byref_d_1 *)&d, 570425344));
36