1// RUN: %clang_cc1 -E %s -o %t.mm
2// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
3// rdar://9006279
4
5void q(void (^p)(void)) {
6    p();
7}
8
9void 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
28int main() {
29    f();
30    return 0;
31}
32
33// CHECK 2: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK
34// CHECK: {(void*)0,(__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, 0, sizeof(__Block_byref_BYREF_VAR_CHECK_0), 'a'}
35// CHECK: __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (__Block_byref_d_1 *)&d, 570425344));
36