xref: /aosp_15_r20/external/compiler-rt/test/BlocksRuntime/copy-block-literal-rdar6439600.c (revision 7c3d14c8b49c529e04be81a3ce6f5cc23712e4c6)
1*7c3d14c8STreehugger Robot //
2*7c3d14c8STreehugger Robot //                     The LLVM Compiler Infrastructure
3*7c3d14c8STreehugger Robot //
4*7c3d14c8STreehugger Robot // This file is distributed under the University of Illinois Open Source
5*7c3d14c8STreehugger Robot // License. See LICENSE.TXT for details.
6*7c3d14c8STreehugger Robot 
7*7c3d14c8STreehugger Robot // CONFIG open rdar://6439600
8*7c3d14c8STreehugger Robot 
9*7c3d14c8STreehugger Robot #import <stdio.h>
10*7c3d14c8STreehugger Robot #import <stdlib.h>
11*7c3d14c8STreehugger Robot 
12*7c3d14c8STreehugger Robot #define NUMBER_OF_BLOCKS 100
main(int argc,const char * argv[])13*7c3d14c8STreehugger Robot int main (int argc, const char * argv[]) {
14*7c3d14c8STreehugger Robot     int (^x[NUMBER_OF_BLOCKS])();
15*7c3d14c8STreehugger Robot     int i;
16*7c3d14c8STreehugger Robot 
17*7c3d14c8STreehugger Robot     for(i=0; i<NUMBER_OF_BLOCKS; i++) x[i] = ^{ return i; };
18*7c3d14c8STreehugger Robot 
19*7c3d14c8STreehugger Robot     for(i=0; i<NUMBER_OF_BLOCKS; i++) {
20*7c3d14c8STreehugger Robot         if (x[i]() != i) {
21*7c3d14c8STreehugger Robot             printf("%s: failure, %d != %d\n", argv[0], x[i](), i);
22*7c3d14c8STreehugger Robot             exit(1);
23*7c3d14c8STreehugger Robot         }
24*7c3d14c8STreehugger Robot     }
25*7c3d14c8STreehugger Robot 
26*7c3d14c8STreehugger Robot     printf("%s: success\n", argv[0]);
27*7c3d14c8STreehugger Robot 
28*7c3d14c8STreehugger Robot     return 0;
29*7c3d14c8STreehugger Robot }
30