Home | History | Annotate | Download | only in CodeGenCXX
      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 
     20 void scan() {
     21             OUTER_BLOCK(^(ST &ref) {
     22                 INNER_BLOCK(^() { return ref.referrer + ref.filler; });
     23             });
     24 
     25 }
     26 
     27 int main() {
     28     scan();
     29 }
     30