1e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian// RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t 2e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian// rdar: // 8041962 3e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 4e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanianextern "C" int printf(const char*, ...); 5e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 6e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanianstruct ST { 7e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian int filler; 8e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian int referrer; 9e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian}; 10e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 11e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanianvoid OUTER_BLOCK(void (^fixer)(ST& ref)) { 12e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian ST ref = {2, 100}; 13e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian fixer(ref); 14e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian} 15e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 16e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanianvoid INNER_BLOCK(int (^largeDo) ()) { 17e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian printf("%d\n", largeDo()); 18e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian} 19e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 20e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanianvoid scan() { 21e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian OUTER_BLOCK(^(ST &ref) { 22e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian INNER_BLOCK(^() { return ref.referrer + ref.filler; }); 23e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian }); 24e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 25e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian} 26e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian 27e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanianint main() { 28e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian scan(); 29e0c9522091dcc14a21d6d24e9aba410d823eb321Fariborz Jahanian} 30