blob: 762b5d9910df103b2c8daa28cb3913c32e4f8cc3 [file] [log] [blame]
Fariborz Jahanian63628032012-06-26 16:06:38 +00001// RUN: %clang_cc1 -std=c++11 -emit-llvm -fblocks -o - -triple x86_64-apple-darwin10 %s | FileCheck %s
2// rdar://11343499
3
4namespace N {
5 typedef void (^BL)();
6 int func(BL, BL, BL);
7
Stephen Lin43622612013-08-15 06:47:53 +00008// CHECK-LABEL: define internal void @_ZN1N8ArrBlockE_block_invoke(
9// CHECK-LABEL: define internal void @_ZN1N8ArrBlockE_block_invoke_2(
10// CHECK-LABEL: define internal void @_ZN1N8ArrBlockE_block_invoke_3
Fariborz Jahanian63628032012-06-26 16:06:38 +000011 BL ArrBlock [] = { ^{}, ^{}, ^{} };
12
Stephen Lin43622612013-08-15 06:47:53 +000013// CHECK-LABEL: define internal void @_ZN1N4ivalE_block_invoke_4(
14// CHECK-LABEL: define internal void @_ZN1N4ivalE_block_invoke_5(
15// CHECK-LABEL: define internal void @_ZN1N4ivalE_block_invoke_6(
Fariborz Jahanian63628032012-06-26 16:06:38 +000016 int ival = func(^{}, ^{}, ^{});
17
Stephen Lin43622612013-08-15 06:47:53 +000018// CHECK-LABEL: define internal void @_ZN1N9gvarlobalE_block_invoke_7(
Fariborz Jahanian63628032012-06-26 16:06:38 +000019 void (^gvarlobal)(void) = ^{};
20
21 struct S {
22 BL field = ^{};
23 };
24
Stephen Lin43622612013-08-15 06:47:53 +000025// CHECK-LABEL: define internal void @_ZN1N3blfE_block_invoke_8(
Fariborz Jahanian63628032012-06-26 16:06:38 +000026 S blf;
27};