int main(int argc, char** args){ int64_t* n; _DECL_DEALLOC(n); int64_t max; int64_t size; int64_t repeats; int64_t index; _DECL_1DARRAY(arr); _DECL_DEALLOC(arr); int64_t* _7; _DECL_DEALLOC(_7); _DECL_2DARRAY(_8); _DECL_DEALLOC(_8); int64_t _9; _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); int64_t _11; int64_t _12; int64_t _13; int64_t _14; _DECL_1DARRAY(_15); _DECL_DEALLOC(_15); int64_t _16; int64_t _17; int64_t _18; _DECL_1DARRAY(_19); _DECL_DEALLOC(_19); void* _20; int64_t _22; int64_t _23; int64_t _24; void* _25; int64_t _27; int64_t _28; void* _29; _DECL_1DARRAY(_31); _DECL_DEALLOC(_31); void* _32; void* _34; _DECL_1DARRAY(_36); _DECL_DEALLOC(_36); //fieldload %8 = %0 args : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} _DEALLOC_2DARRAY(_8); _CONV_ARGS(_8); _8_dealloc = true; //const %9 = 0 : int _9 = 0; //indexof %10 = %8, %9 : int[][] _10=_8[_9]; _10_size = _8_size_size; _10_dealloc = false; //invoke (%7) = (%10) whiley/lang/Int:parse : function(whiley/lang/ASCII:string)->(null|int) { _STR_TO_INT(_7, _10); _7_dealloc = true; _10_dealloc = false; } //assign %1 = %7 : null|int // isCopyEliminated = true _DEALLOC(n); n = _7; _TRANSFER_DEALLOC_POST(n, _7); //ifis %1, null goto blklab4 : null|int if(n == NULL) { goto blklab4;} //const %11 = 1 : int _11 = 1; //assign %2 = %11 : int // isCopyEliminated = true max = _11; //assign %3 = %1 : int // isCopyEliminated = true size = *n; //const %12 = 0 : int _12 = 0; //assign %4 = %12 : int // isCopyEliminated = true repeats = _12; //loop (%4, %5, %6, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28) while(true){ //ifge %4, %2 goto blklab5 : int if(repeats>=max){goto blklab5;} //const %13 = 0 : int _13 = 0; //assign %5 = %13 : int // isCopyEliminated = true index = _13; //const %14 = 0 : int _14 = 0; //arraygen %15 = [14; 3] : int[] _NEW1DARRAY_DEALLOC(_15, _14, size, int64_t); //assign %6 = %15 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(arr, _15); //loop (%5, %6, %16, %17, %18) while(true){ //ifge %5, %3 goto blklab7 : int if(index>=size){goto blklab7;} //sub %16 = %3, %5 : int _16=size-index; //update %6[%5] = %16 : int[] -> int[] arr[index] = _16; //const %17 = 1 : int _17 = 1; //add %18 = %5, %17 : int _18=index+_17; //assign %5 = %18 : int // isCopyEliminated = true index = _18; //.blklab8 blklab8:; } //.blklab7 blklab7:; //invoke (%19) = (%6) Reverse_original:reverse : function(int[])->(int[]) { _FUNCTIONCALL_NO_COPY_PRE(_19, arr, 0, "liveness: arr = false, readonly: arr = true, return:arr = NEVER_RETURN" , "reverse"); _DEALLOC(_19); // isCopyEliminated of 'arr at 0' = true _19 = _reverse_(arr, arr_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_19)); _19_dealloc = true; } //assign %6 = %19 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(arr, _19); //fieldload %20 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %21 = %20 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %22 = 1 : int _22 = 1; //sub %23 = %3, %22 : int _23=size-_22; //indexof %24 = %6, %23 : int[] _24=arr[_23]; //indirectinvoke () = %21 (%24) : method(any)->() { printf("%"PRId64"\n", _24); } //fieldload %25 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %26 = %25 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %26 (%4) : method(any)->() { printf("%"PRId64"\n", repeats); } //const %27 = 1 : int _27 = 1; //add %28 = %4, %27 : int _28=repeats+_27; //assign %4 = %28 : int // isCopyEliminated = true repeats = _28; //.blklab6 blklab6:; } //.blklab5 blklab5:; //fieldload %29 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %30 = %29 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %31 = [78,117,109,98,101,114,32,111,102,32,114,101,112,101,97,116,115,58,32] : int[] _DEALLOC(_31); _NEW_1DARRAY_int64_t(_31, 19, 0); _31[0] = 78; _31[1] = 117; _31[2] = 109; _31[3] = 98; _31[4] = 101; _31[5] = 114; _31[6] = 32; _31[7] = 111; _31[8] = 102; _31[9] = 32; _31[10] = 114; _31[11] = 101; _31[12] = 112; _31[13] = 101; _31[14] = 97; _31[15] = 116; _31[16] = 115; _31[17] = 58; _31[18] = 32; _31_dealloc = true; //indirectinvoke () = %30 (%31) : method(int[])->() { printf_s(_31, _31_size); } //fieldload %32 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %33 = %32 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //indirectinvoke () = %33 (%4) : method(any)->() { printf("%"PRId64"\n", repeats); } //fieldload %34 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %35 = %34 println_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %36 = [80,97,115,115,32,82,101,118,101,114,115,101,32,116,101,115,116,32,99,97,115,101,32] : int[] _DEALLOC(_36); _NEW_1DARRAY_int64_t(_36, 23, 0); _36[0] = 80; _36[1] = 97; _36[2] = 115; _36[3] = 115; _36[4] = 32; _36[5] = 82; _36[6] = 101; _36[7] = 118; _36[8] = 101; _36[9] = 114; _36[10] = 115; _36[11] = 101; _36[12] = 32; _36[13] = 116; _36[14] = 101; _36[15] = 115; _36[16] = 116; _36[17] = 32; _36[18] = 99; _36[19] = 97; _36[20] = 115; _36[21] = 101; _36[22] = 32; _36_dealloc = true; //indirectinvoke () = %35 (%36) : method(int[])->() { println_s(_36, _36_size); } //.blklab4 blklab4:; //return _DEALLOC(n); _DEALLOC(arr); _DEALLOC(_7); _FREE_ARGS(_8); _DEALLOC(_10); _DEALLOC(_15); _DEALLOC(_19); _DEALLOC(_31); _DEALLOC(_36); exit(0); }
int64_t* _toString_(_DECL_1DARRAY_PARAM(c), _DECL_1DARRAYSIZE_PARAM_CALLBYREFERENCE){ _DECL_DEALLOC(c); _DECL_1DARRAY(_1); _DECL_DEALLOC(_1); _DECL_1DARRAY(r); _DECL_DEALLOC(r); bool firstTime; int64_t i; int64_t amt; void* _6; size_t _6_size = 0; _DECL_DEALLOC(_6); bool _7; int64_t _8; int64_t _9; int64_t _10; int64_t _11; bool _12; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); bool _15; _DECL_1DARRAY(_16); _DECL_DEALLOC(_16); _DECL_1DARRAY(_17); _DECL_DEALLOC(_17); _DECL_1DARRAY(_18); _DECL_DEALLOC(_18); _DECL_1DARRAY(_19); _DECL_DEALLOC(_19); _DECL_1DARRAY(_20); _DECL_DEALLOC(_20); _DECL_2DARRAY(_21); _DECL_DEALLOC(_21); _DECL_1DARRAY(_22); _DECL_DEALLOC(_22); int64_t _23; int64_t _24; void* _25; size_t _25_size = 0; _DECL_DEALLOC(_25); _DECL_1DARRAY(_26); _DECL_DEALLOC(_26); //const %6 = [] : void[] _DEALLOC(_6); _NEW_1DARRAY_int64_t(_6, 0, 0); _6_dealloc = true; //assign %2 = %6 : void[] _DEALLOC(r); _COPY_1DARRAY_int64_t(r, _6); _ADD_DEALLOC_POST(r, _6); //const %7 = true : bool _7 = true; //assign %3 = %7 : bool firstTime = _7; //const %8 = 0 : int _8 = 0; //assign %4 = %8 : int i = _8; //loop (%2, %3, %4, %5, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24) while(true){ //lengthof %9 = %0 : int[] _9 = c_size; //ifge %4, %9 goto blklab2 : int if(i>=_9){goto blklab2;} //indexof %10 = %0, %4 : int[] _10=c[i]; //assign %5 = %10 : int amt = _10; //const %11 = 0 : int _11 = 0; //ifeq %5, %11 goto blklab4 : int if(amt==_11){goto blklab4;} //const %12 = true : bool _12 = true; //ifeq %3, %12 goto blklab5 : bool if(firstTime==_12){goto blklab5;} //const %14 = [44,32] : int[] _DEALLOC(_14); _NEW_1DARRAY_int64_t(_14, 2, 0); _14[0] = 44; _14[1] = 32; _14_dealloc = true; //invoke (%13) = (%2, %14) whiley/lang/Array:append : function(int[],int[])->(int[]) { _DEALLOC(_13); _13 = Array_Append(r, r_size , _14, _14_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_13)); _13_dealloc = true; } //assign %2 = %13 : int[] _DEALLOC(r); _COPY_1DARRAY_int64_t(r, _13); _ADD_DEALLOC_POST(r, _13); //.blklab5 blklab5:; //const %15 = false : bool _15 = false; //assign %3 = %15 : bool firstTime = _15; //invoke (%17) = (%5) whiley/lang/Int:toString : function(int)->(whiley/lang/ASCII:string) { _DEALLOC(_17); _17 = Int_toString(amt, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_17)); _17_dealloc = true; } //invoke (%16) = (%2, %17) whiley/lang/Array:append : function(int[],int[])->(int[]) { _DEALLOC(_16); _16 = Array_Append(r, r_size , _17, _17_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_16)); _16_dealloc = true; } //assign %2 = %16 : int[] _DEALLOC(r); _COPY_1DARRAY_int64_t(r, _16); _ADD_DEALLOC_POST(r, _16); //const %19 = [32,120,32] : int[] _DEALLOC(_19); _NEW_1DARRAY_int64_t(_19, 3, 0); _19[0] = 32; _19[1] = 120; _19[2] = 32; _19_dealloc = true; //invoke (%18) = (%2, %19) whiley/lang/Array:append : function(int[],int[])->(int[]) { _DEALLOC(_18); _18 = Array_Append(r, r_size , _19, _19_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_18)); _18_dealloc = true; } //assign %2 = %18 : int[] _DEALLOC(r); _COPY_1DARRAY_int64_t(r, _18); _ADD_DEALLOC_POST(r, _18); //const %21 = [[49,99],[53,99],[49,48,99],[50,48,99],[53,48,99],[36,49],[36,53],[36,49,48]] : int[][] _DEALLOC_2DARRAY(_21); _NEW_2DARRAY_int64_t_EMPTY(_21, 8, 3); { int64_t tmp[] = {49, 99, '\0'}; memcpy(_21[0], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {53, 99, '\0'}; memcpy(_21[1], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {49, 48, 99}; memcpy(_21[2], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {50, 48, 99}; memcpy(_21[3], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {53, 48, 99}; memcpy(_21[4], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {36, 49, '\0'}; memcpy(_21[5], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {36, 53, '\0'}; memcpy(_21[6], tmp, 3*sizeof(int64_t)); } { int64_t tmp[] = {36, 49, 48}; memcpy(_21[7], tmp, 3*sizeof(int64_t)); } _21_dealloc = true; //indexof %22 = %21, %4 : int[][] _22=_21[i]; _22_size = _21_size_size; _22_dealloc = false; //invoke (%20) = (%2, %22) whiley/lang/Array:append : function(int[],int[])->(int[]) { _DEALLOC(_20); _20 = Array_Append(r, r_size , _22, _22_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_20)); _20_dealloc = true; } //assign %2 = %20 : int[] _DEALLOC(r); _COPY_1DARRAY_int64_t(r, _20); _ADD_DEALLOC_POST(r, _20); //.blklab4 blklab4:; //const %23 = 1 : int _23 = 1; //add %24 = %4, %23 : int _24=i+_23; //assign %4 = %24 : int i = _24; //.blklab3 blklab3:; } //.blklab2 blklab2:; //const %25 = [] : void[] _DEALLOC(_25); _NEW_1DARRAY_int64_t(_25, 0, 0); _25_dealloc = true; //ifne %2, %25 goto blklab6 : int[] if(r!=_25){goto blklab6;} //const %26 = [40,110,111,116,104,105,110,103,41] : int[] _DEALLOC(_26); _NEW_1DARRAY_int64_t(_26, 9, 0); _26[0] = 40; _26[1] = 110; _26[2] = 111; _26[3] = 116; _26[4] = 104; _26[5] = 105; _26[6] = 110; _26[7] = 103; _26[8] = 41; _26_dealloc = true; //assign %2 = %26 : int[] _DEALLOC(r); _COPY_1DARRAY_int64_t(r, _26); _ADD_DEALLOC_POST(r, _26); //.blklab6 blklab6:; //return %2 _DEALLOC(c); _DEALLOC(_1); _DEALLOC(_6); _DEALLOC(_13); _DEALLOC(_14); _DEALLOC(_16); _DEALLOC(_17); _DEALLOC(_18); _DEALLOC(_19); _DEALLOC(_20); _DEALLOC_2DARRAY(_21); _DEALLOC(_22); _DEALLOC(_25); _DEALLOC(_26); _UPDATE_1DARRAYSZIE_PARAM_CALLBYREFERENCE(r); return r; //return }