14904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// RUN: %clang_cc1 -std=c++11 -emit-llvm -fblocks -o - -triple x86_64-apple-darwin10 %s | FileCheck %s
24904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// rdar://11343499
34904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian
44904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahaniannamespace N {
54904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  typedef void (^BL)();
64904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  int func(BL, BL, BL);
74904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian
893ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N8ArrBlockE_block_invoke(
993ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N8ArrBlockE_block_invoke_2(
1093ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N8ArrBlockE_block_invoke_3
114904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  BL ArrBlock [] = { ^{}, ^{}, ^{} };
124904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian
1393ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N4ivalE_block_invoke_4(
1493ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N4ivalE_block_invoke_5(
1593ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N4ivalE_block_invoke_6(
164904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  int ival = func(^{}, ^{}, ^{});
174904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian
1893ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N9gvarlobalE_block_invoke_7(
194904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  void (^gvarlobal)(void) = ^{};
204904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian
214904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  struct S {
224904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian    BL field = ^{};
234904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  };
244904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian
2593ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin// CHECK-LABEL: define internal void @_ZN1N3blfE_block_invoke_8(
264904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian  S blf;
274904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian};
28