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