// RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t | |
// rdar: // 8041962 | |
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(); | |
} |