1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void* ycf_debug_global_stack_top_ptr = NULL;
ycf_debug_get_stack_start()5 void* ycf_debug_get_stack_start(){
6 return ycf_debug_global_stack_top_ptr;
7 }
8
9 #define YCF_YIELD()
10
fun()11 int fun(){
12 int array[1];
13 int* ptr;
14 array[0] = 1;
15 ptr = &array[0];
16 (void)ptr;
17 YCF_YIELD();
18 array[0] = 1;
19 return array[0];
20 }
21
allocator(size_t size,void * context)22 void* allocator(size_t size, void* context){
23 (void)context;
24 return malloc(size);
25 }
26
freer(void * data,void * context)27 void freer(void* data, void* context){
28 (void)context;
29 free(data);
30 }
31
main(int argc,const char * argv[])32 int main( int argc, const char* argv[] )
33 {
34 #ifdef YCF_YIELD_CODE_GENERATED
35 void* wb = NULL;
36 long nr_of_reductions = 1;
37 #endif
38 int ret = 0;
39 #ifdef YCF_YIELD_CODE_GENERATED
40 do{
41 ret = fun_ycf_gen_yielding(&nr_of_reductions,&wb,NULL,allocator,freer,NULL,0,NULL);
42 if(wb != NULL){
43 printf("TRAPPED\n");
44 }
45 }while(wb != NULL);
46 if(wb != NULL){
47 free(wb);
48 }
49 #else
50 fun();
51 #endif
52 printf("RETURNED %d\n", ret);
53 if(ret != 1){
54 return 1;
55 }else{
56 return 0;
57 }
58 }
59
60