// RUN: %clang_cc1 -std=c++11 -fblocks -emit-llvm -o - -triple x86_64-apple-darwin11.3 %s | FileCheck %s namespace PR12746 { // CHECK: define{{.*}} zeroext i1 @_ZN7PR127462f1EPi bool f1(int *x) { // CHECK: store i8* bitcast (i1 (i8*)* @___ZN7PR127462f1EPi_block_invoke to i8*) bool (^outer)() = ^ { auto inner = [&]() -> bool { return x == 0; }; return inner(); }; return outer(); } // CHECK: define internal zeroext i1 @___ZN7PR127462f1EPi_block_invoke // CHECK: call zeroext i1 @"_ZZZN7PR127462f1EPiEUb_ENK3$_0clEv" bool f2(int *x) { auto outer = [&]() -> bool { bool (^inner)() = ^ { return x == 0; }; return inner(); }; return outer(); } }