global-block-literal-helpers.cpp revision 4904bf4e84cfb48080270ebaa9005327f18ab0e5
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 84904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N8ArrBlockE_block_invoke( 94904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N8ArrBlockE_block_invoke_2( 104904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N8ArrBlockE_block_invoke_3 114904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian BL ArrBlock [] = { ^{}, ^{}, ^{} }; 124904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian 134904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N4ivalE_block_invoke_4( 144904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N4ivalE_block_invoke_5( 154904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N4ivalE_block_invoke_6( 164904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian int ival = func(^{}, ^{}, ^{}); 174904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian 184904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: 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 254904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian// CHECK: define internal void @_ZN1N3blfE_block_invoke_8( 264904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian S blf; 274904bf4e84cfb48080270ebaa9005327f18ab0e5Fariborz Jahanian}; 28