blob: 73c670f5c925935beeefbc13f1b81ed9fe2bfc62 [file] [log] [blame]
John McCall5fb5df92012-06-20 06:18:46 +00001// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o %t-64.ll
Tim Northover19ae1172013-08-12 12:51:05 +00002// RUN: FileCheck -check-prefix CHECK-LP64 --input-file=%t-64.ll %s
Fariborz Jahanian366a9482010-09-07 23:26:17 +00003// rdar: // 8390455
4
5@class NSArray;
6
7static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
8
9 for(id rawAddress in addresses)
10 {
11 NSArray *separatedAddresses = ((NSArray*)0);
12 separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
13 }
14 return (NSArray *)0;
15};
16
Richard Smith7747ce22015-08-19 20:49:38 +000017extern NSArray *address;
18extern unsigned long level;
19
Fariborz Jahanian366a9482010-09-07 23:26:17 +000020void FUNC()
21{
Richard Smith7747ce22015-08-19 20:49:38 +000022 ArrayRecurs(address, level);
23
Fariborz Jahanian366a9482010-09-07 23:26:17 +000024 static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
25
26 for(id rawAddress in addresses)
27 {
28 NSArray *separatedAddresses = ((NSArray*)0);
29 separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
30 }
31 return (NSArray *)0;
32 };
Richard Smith7747ce22015-08-19 20:49:38 +000033 ArrayRecurs(address, level);
Fariborz Jahanian366a9482010-09-07 23:26:17 +000034
35 if (ArrayRecurs) {
36 static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
37
38 for(id rawAddress in addresses)
39 {
40 NSArray *separatedAddresses = ((NSArray*)0);
41 separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
42 }
43 return (NSArray *)0;
44 };
Richard Smith7747ce22015-08-19 20:49:38 +000045 ArrayRecurs(address, level);
Fariborz Jahanian366a9482010-09-07 23:26:17 +000046 }
47}
48
49void FUNC1()
50{
51 static NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
52
53 for(id rawAddress in addresses)
54 {
55 NSArray *separatedAddresses = ((NSArray*)0);
56 separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
57 }
58 return (NSArray *)0;
59 };
Richard Smith7747ce22015-08-19 20:49:38 +000060 ArrayRecurs(address, level);
Fariborz Jahanian366a9482010-09-07 23:26:17 +000061}
62// CHECK-LP64: @ArrayRecurs = internal global
63// CHECK-LP64: @FUNC.ArrayRecurs = internal global
Richard Smith7747ce22015-08-19 20:49:38 +000064// CHECK-LP64: @FUNC.ArrayRecurs.1 = internal global
Fariborz Jahanian366a9482010-09-07 23:26:17 +000065// CHECK-LP64: @FUNC1.ArrayRecurs = internal global