30 lines · c
1// RUN: %clang_cc1 %s -triple x86_64-linux -emit-llvm -fblocks -o - | FileCheck %s2 3// These will be inlined by the optimizers provided the block descriptors4// and block literals are internal constants.5// CHECK: @__block_descriptor_tmp = internal constant6// CHECK: @__block_literal_global = internal constant7// CHECK: @__block_descriptor_tmp.2 = internal constant8// CHECK: @__block_literal_global.3 = internal constant9static int fun(int x) {10 return x+1;11}12 13static int block(int x) {14 return (^(int x){return x+1;})(x);15}16 17extern int printf(const char *, ...);18static void print(int result) {19 printf("%d\n", result);20}21 22int main (int argc, const char * argv[]) {23 int x = argc-1;24 print(fun(x));25 print(block(x));26 int (^block_inline)(int) = ^(int x){return x+1;};27 print(block_inline(x));28 return 0;29}30