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 // testfilerunner CONFIG 8*7c3d14c8STreehugger Robot 9*7c3d14c8STreehugger Robot #import <stdio.h> 10*7c3d14c8STreehugger Robot #import <Block.h> 11*7c3d14c8STreehugger Robot 12*7c3d14c8STreehugger Robot int global; 13*7c3d14c8STreehugger Robot 14*7c3d14c8STreehugger Robot void (^gblock)(int) = ^(int x){ global = x; }; 15*7c3d14c8STreehugger Robot main(int argc,char * argv[])16*7c3d14c8STreehugger Robotint main(int argc, char *argv[]) { 17*7c3d14c8STreehugger Robot gblock(1); 18*7c3d14c8STreehugger Robot if (global != 1) { 19*7c3d14c8STreehugger Robot printf("%s: *** did not set global to 1\n", argv[0]); 20*7c3d14c8STreehugger Robot return 1; 21*7c3d14c8STreehugger Robot } 22*7c3d14c8STreehugger Robot void (^gblockcopy)(int) = Block_copy(gblock); 23*7c3d14c8STreehugger Robot if (gblockcopy != gblock) { 24*7c3d14c8STreehugger Robot printf("global copy %p not a no-op %p\n", (void *)gblockcopy, (void *)gblock); 25*7c3d14c8STreehugger Robot return 1; 26*7c3d14c8STreehugger Robot } 27*7c3d14c8STreehugger Robot Block_release(gblockcopy); 28*7c3d14c8STreehugger Robot gblock(3); 29*7c3d14c8STreehugger Robot if (global != 3) { 30*7c3d14c8STreehugger Robot printf("%s: *** did not set global to 3\n", argv[0]); 31*7c3d14c8STreehugger Robot return 1; 32*7c3d14c8STreehugger Robot } 33*7c3d14c8STreehugger Robot gblockcopy = Block_copy(gblock); 34*7c3d14c8STreehugger Robot gblockcopy(5); 35*7c3d14c8STreehugger Robot if (global != 5) { 36*7c3d14c8STreehugger Robot printf("%s: *** did not set global to 5\n", argv[0]); 37*7c3d14c8STreehugger Robot return 1; 38*7c3d14c8STreehugger Robot } 39*7c3d14c8STreehugger Robot printf("%s: Success!\n", argv[0]); 40*7c3d14c8STreehugger Robot return 0; 41*7c3d14c8STreehugger Robot } 42*7c3d14c8STreehugger Robot 43