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 | |
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 | |
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 | |