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