brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · ef179c1 Raw
76 lines · plain
1// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s2 3// CHECK: @ArrayRecurs = internal global4// CHECK: @FUNC.ArrayRecurs = internal global5// CHECK: @FUNC.ArrayRecurs.1 = internal global6// CHECK: @FUNC1.ArrayRecurs = internal global7 8@class NSArray;9 10static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {11 12  for(id rawAddress in addresses)13  {14   NSArray *separatedAddresses = ((NSArray*)0);15   separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);16  }17  return (NSArray *)0;18};19 20extern NSArray *address;21extern unsigned long level;22 23void FUNC(void)24{25 ArrayRecurs(address, level);26 27 static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {28 29  for(id rawAddress in addresses)30  {31   NSArray *separatedAddresses = ((NSArray*)0);32   separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);33  }34  return (NSArray *)0;35 };36 ArrayRecurs(address, level);37 38 if (ArrayRecurs) {39   static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {40 41     for(id rawAddress in addresses)42     {43       NSArray *separatedAddresses = ((NSArray*)0);44       separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);45     }46     return (NSArray *)0;47   };48   ArrayRecurs(address, level);49 }50}51 52void FUNC2(void) {53  static void (^const block1)(int) = ^(int a){54    if (a--)55      block1(a);56  };57}58 59// CHECK-LABEL: define{{.*}} void @FUNC2(60// CHECK: define internal void @_block_invoke{{.*}}(61// CHECK: call void %{{.*}}(ptr noundef @__block_literal_global{{.*}}, i32 noundef %{{.*}})62 63void FUNC1(void)64{65 static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {66 67  for(id rawAddress in addresses)68  {69   NSArray *separatedAddresses = ((NSArray*)0);70   separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);71  }72  return (NSArray *)0;73 };74 ArrayRecurs(address, level);75}76