// RUN: %clang_cc1 -E %s -o %t.mm
// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
// rdar://9006279

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 2: (__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));
