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