| // RUN: %clang_cc1 -E %s -o %t.mm | 
 | // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s | 
 |  | 
 | void q(void (^p)(void)) { | 
 |     p(); | 
 | } | 
 |  | 
 | void f() { | 
 |     __block char BYREF_VAR_CHECK = 'a'; | 
 |     __block char d = 'd'; | 
 |     q(^{ | 
 |         q(^{ | 
 |             __block char e = 'e'; | 
 |             char l = 'l'; | 
 |             BYREF_VAR_CHECK = 'b'; | 
 |             d = 'd'; | 
 |             q(^{ | 
 |                  e = '1'; | 
 |                  BYREF_VAR_CHECK = '2'; | 
 |                  d = '3'; | 
 |                } | 
 |              ); | 
 |         }); | 
 |     }); | 
 | } | 
 |  | 
 | int main() { | 
 |     f(); | 
 |     return 0; | 
 | } | 
 |  | 
 | // CHECK: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK | 
 | // CHECK: {(void*)0,(__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, 0, sizeof(__Block_byref_BYREF_VAR_CHECK_0), 'a'} | 
 | // CHECK: __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (__Block_byref_d_1 *)&d, 570425344))); |