| // RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t | |
| extern "C" int printf(const char*, ...); | |
| struct ST { | |
| int filler; | |
| int referrer; | |
| }; | |
| void OUTER_BLOCK(void (^fixer)(ST& ref)) { | |
| ST ref = {2, 100}; | |
| fixer(ref); | |
| } | |
| void INNER_BLOCK(int (^largeDo) ()) { | |
| printf("%d\n", largeDo()); | |
| } | |
| void scan() { | |
| OUTER_BLOCK(^(ST &ref) { | |
| INNER_BLOCK(^() { return ref.referrer + ref.filler; }); | |
| }); | |
| } | |
| int main() { | |
| scan(); | |
| } |