1*67e74705SXin Li// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o %t-64.ll 2*67e74705SXin Li// RUN: FileCheck -check-prefix CHECK-LP64 --input-file=%t-64.ll %s 3*67e74705SXin Li// rdar: // 8390455 4*67e74705SXin Li 5*67e74705SXin Li@class NSArray; 6*67e74705SXin Li 7*67e74705SXin Listatic NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) { 8*67e74705SXin Li 9*67e74705SXin Li for(id rawAddress in addresses) 10*67e74705SXin Li { 11*67e74705SXin Li NSArray *separatedAddresses = ((NSArray*)0); 12*67e74705SXin Li separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1); 13*67e74705SXin Li } 14*67e74705SXin Li return (NSArray *)0; 15*67e74705SXin Li}; 16*67e74705SXin Li 17*67e74705SXin Liextern NSArray *address; 18*67e74705SXin Liextern unsigned long level; 19*67e74705SXin Li 20*67e74705SXin Livoid FUNC() 21*67e74705SXin Li{ 22*67e74705SXin Li ArrayRecurs(address, level); 23*67e74705SXin Li 24*67e74705SXin Li static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) { 25*67e74705SXin Li 26*67e74705SXin Li for(id rawAddress in addresses) 27*67e74705SXin Li { 28*67e74705SXin Li NSArray *separatedAddresses = ((NSArray*)0); 29*67e74705SXin Li separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1); 30*67e74705SXin Li } 31*67e74705SXin Li return (NSArray *)0; 32*67e74705SXin Li }; 33*67e74705SXin Li ArrayRecurs(address, level); 34*67e74705SXin Li 35*67e74705SXin Li if (ArrayRecurs) { 36*67e74705SXin Li static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) { 37*67e74705SXin Li 38*67e74705SXin Li for(id rawAddress in addresses) 39*67e74705SXin Li { 40*67e74705SXin Li NSArray *separatedAddresses = ((NSArray*)0); 41*67e74705SXin Li separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1); 42*67e74705SXin Li } 43*67e74705SXin Li return (NSArray *)0; 44*67e74705SXin Li }; 45*67e74705SXin Li ArrayRecurs(address, level); 46*67e74705SXin Li } 47*67e74705SXin Li} 48*67e74705SXin Li 49*67e74705SXin Livoid FUNC1() 50*67e74705SXin Li{ 51*67e74705SXin Li static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) { 52*67e74705SXin Li 53*67e74705SXin Li for(id rawAddress in addresses) 54*67e74705SXin Li { 55*67e74705SXin Li NSArray *separatedAddresses = ((NSArray*)0); 56*67e74705SXin Li separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1); 57*67e74705SXin Li } 58*67e74705SXin Li return (NSArray *)0; 59*67e74705SXin Li }; 60*67e74705SXin Li ArrayRecurs(address, level); 61*67e74705SXin Li} 62*67e74705SXin Li// CHECK-LP64: @ArrayRecurs = internal global 63*67e74705SXin Li// CHECK-LP64: @FUNC.ArrayRecurs = internal global 64*67e74705SXin Li// CHECK-LP64: @FUNC.ArrayRecurs.1 = internal global 65*67e74705SXin Li// CHECK-LP64: @FUNC1.ArrayRecurs = internal global 66