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