blob: 1ff1ae2dc85606806a4720ddd3840e17a05d006a [file] [log] [blame]
Fariborz Jahanian79651722010-06-02 21:35:17 +00001// 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}