1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -emit-llvm -fblocks -o - | FileCheck %s 2*f4a2713aSLionel Sambuc // rdar://5865221 3*f4a2713aSLionel Sambuc 4*f4a2713aSLionel Sambuc // These will be inlined by the optimizers provided the block descriptors 5*f4a2713aSLionel Sambuc // and block literals are internal constants. 6*f4a2713aSLionel Sambuc // CHECK: @__block_descriptor_tmp = internal constant 7*f4a2713aSLionel Sambuc // CHECK: @__block_literal_global = internal constant 8*f4a2713aSLionel Sambuc // CHECK: @__block_descriptor_tmp1 = internal constant 9*f4a2713aSLionel Sambuc // CHECK: @__block_literal_global2 = internal constant fun(int x)10*f4a2713aSLionel Sambucstatic int fun(int x) { 11*f4a2713aSLionel Sambuc return x+1; 12*f4a2713aSLionel Sambuc } 13*f4a2713aSLionel Sambuc block(int x)14*f4a2713aSLionel Sambucstatic int block(int x) { 15*f4a2713aSLionel Sambuc return (^(int x){return x+1;})(x); 16*f4a2713aSLionel Sambuc } 17*f4a2713aSLionel Sambuc print(int result)18*f4a2713aSLionel Sambucstatic void print(int result) { 19*f4a2713aSLionel Sambuc printf("%d\n", result); 20*f4a2713aSLionel Sambuc } 21*f4a2713aSLionel Sambuc main(int argc,const char * argv[])22*f4a2713aSLionel Sambucint main (int argc, const char * argv[]) { 23*f4a2713aSLionel Sambuc int x = argc-1; 24*f4a2713aSLionel Sambuc print(fun(x)); 25*f4a2713aSLionel Sambuc print(block(x)); 26*f4a2713aSLionel Sambuc int (^block_inline)(int) = ^(int x){return x+1;}; 27*f4a2713aSLionel Sambuc print(block_inline(x)); 28*f4a2713aSLionel Sambuc return 0; 29*f4a2713aSLionel Sambuc } 30