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