Home | History | Annotate | Download | only in expr.prim.lambda
      1 // RUN: %clang_cc1 -std=c++11 -fblocks -emit-llvm -o - -triple x86_64-apple-darwin11.3 %s | FileCheck %s
      2 
      3 namespace PR12746 {
      4   // CHECK: define zeroext i1 @_ZN7PR127462f1EPi
      5   bool f1(int *x) {
      6     // CHECK: store i8* bitcast (i1 (i8*)* @___ZN7PR127462f1EPi_block_invoke to i8*)
      7     bool (^outer)() = ^ {
      8       auto inner = [&]() -> bool {
      9 	return x == 0;
     10       };
     11       return inner();
     12     };
     13     return outer();
     14   }
     15 
     16   // CHECK: define internal zeroext i1 @___ZN7PR127462f1EPi_block_invoke
     17   // CHECK: call zeroext i1 @"_ZZZN7PR127462f1EPiEUb_ENK3$_0clEv"
     18 
     19   bool f2(int *x) {
     20     auto outer = [&]() -> bool {
     21       bool (^inner)() = ^ {
     22 	return x == 0;
     23       };
     24       return inner();
     25     };
     26     return outer();
     27   }
     28 }
     29 
     30