int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_DEALLOC(a); _DECL_1DARRAY(b); _DECL_DEALLOC(b); _DECL_1DARRAY(r); _DECL_DEALLOC(r); int64_t _4; int64_t _5; _DECL_1DARRAY(_6); _DECL_DEALLOC(_6); int64_t _7; int64_t _8; _DECL_1DARRAY(_9); _DECL_DEALLOC(_9); _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); //const %4 = 2 : int _4 = 2; //const %5 = 2 : int _5 = 2; //arraygen %6 = [4; 5] : int[] _NEW1DARRAY_DEALLOC(_6, _4, _5, int64_t); //assign %1 = %6 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(a, _6); //const %7 = 2 : int _7 = 2; //const %8 = 2 : int _8 = 2; //arraygen %9 = [7; 8] : int[] _NEW1DARRAY_DEALLOC(_9, _7, _8, int64_t); //assign %2 = %9 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(b, _9); //invoke (%10) = (%1, %2) 2parameter_test79:func : function(int[],int[])->(int[]) { _FUNCTIONCALL_NO_COPY_PRE(_10, b, "true-NEVER_RETURN-false" , "func"); _FUNCTIONCALL_NO_COPY_PRE(_10, a, "false-ALWAYS_RETURN-false" , "func"); _DEALLOC(_10); // isCopyEliminated of '_1' = true // isCopyEliminated of '_2' = true _10 = _func_(a, a_size, b, b_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_10)); _10_dealloc = a_dealloc; a_dealloc = false; } //assign %3 = %10 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(r, _10); //return _DEALLOC(a); _DEALLOC(b); _DEALLOC(r); _DEALLOC(_6); _DEALLOC(_9); _DEALLOC(_10); exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_DEALLOC(a); _DECL_1DARRAY(b); _DECL_DEALLOC(b); _DECL_1DARRAY(c); _DECL_DEALLOC(c); _DECL_1DARRAY(r); _DECL_DEALLOC(r); int64_t _5; int64_t _6; _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); int64_t _8; int64_t _9; _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); int64_t _11; int64_t _12; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); void* _15; int64_t _17; int64_t _18; void* _19; int64_t _21; int64_t _22; //const %5 = 2 : int _5 = 2; //const %6 = 2 : int _6 = 2; //arraygen %7 = [5; 6] : int[] _NEW1DARRAY_DEALLOC(_7, _5, _6, int64_t); //assign %1 = %7 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(a, _7); //const %8 = 2 : int _8 = 2; //const %9 = 2 : int _9 = 2; //arraygen %10 = [8; 9] : int[] _NEW1DARRAY_DEALLOC(_10, _8, _9, int64_t); //assign %2 = %10 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(b, _10); //const %11 = 2 : int _11 = 2; //const %12 = 2 : int _12 = 2; //arraygen %13 = [11; 12] : int[] _NEW1DARRAY_DEALLOC(_13, _11, _12, int64_t); //assign %3 = %13 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(c, _13); //invoke (%14) = (%1, %2, %3) 3parameter_test397:func : function(int[],int[],int[])->(int[]) { _FUNCTIONCALL_NO_COPY_PRE(_14, c, "false-NEVER_RETURN-true" , "func"); _FUNCTIONCALL_NO_COPY_PRE(_14, b, "false-NEVER_RETURN-true" , "func"); _FUNCTIONCALL_NO_COPY_PRE(_14, a, "true-ALWAYS_RETURN-false" , "func"); _DEALLOC(_14); // isCopyEliminated of '_1' = true // isCopyEliminated of '_2' = true // isCopyEliminated of '_3' = true _14 = _func_(a, a_size, b, b_size, c, c_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_14)); _14_dealloc = a_dealloc; a_dealloc = false; } //assign %4 = %14 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(r, _14); //fieldload %15 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %16 = %15 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %17 = 0 : int _17 = 0; //indexof %18 = %2, %17 : int[] _18=b[_17]; //indirectinvoke () = %16 (%18) : method(any)->() { printf("%"PRId64"\n", _18); } //fieldload %19 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %20 = %19 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %21 = 0 : int _21 = 0; //indexof %22 = %3, %21 : int[] _22=c[_21]; //indirectinvoke () = %20 (%22) : method(any)->() { printf("%"PRId64"\n", _22); } //return _DEALLOC(a); _DEALLOC(b); _DEALLOC(c); _DEALLOC(r); _DEALLOC(_7); _DEALLOC(_10); _DEALLOC(_13); _DEALLOC(_14); exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_DEALLOC(a); _DECL_1DARRAY(b); _DECL_DEALLOC(b); _DECL_1DARRAY(c); _DECL_DEALLOC(c); _DECL_1DARRAY(r); _DECL_DEALLOC(r); int64_t _5; int64_t _6; _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); int64_t _8; int64_t _9; _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); int64_t _11; int64_t _12; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); //const %5 = 2 : int _5 = 2; //const %6 = 2 : int _6 = 2; //arraygen %7 = [5; 6] : int[] _NEW1DARRAY_DEALLOC(_7, _5, _6, int64_t); //assign %1 = %7 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(a, _7); //const %8 = 2 : int _8 = 2; //const %9 = 2 : int _9 = 2; //arraygen %10 = [8; 9] : int[] _NEW1DARRAY_DEALLOC(_10, _8, _9, int64_t); //assign %2 = %10 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(b, _10); //const %11 = 2 : int _11 = 2; //const %12 = 2 : int _12 = 2; //arraygen %13 = [11; 12] : int[] _NEW1DARRAY_DEALLOC(_13, _11, _12, int64_t); //assign %3 = %13 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(c, _13); //invoke (%14) = (%1, %2, %3) 3parameter_test637:func : function(int[],int[],int[])->(int[]) { _FUNCTIONCALL_NO_COPY_PRE(_14, c, "true-NEVER_RETURN-false" , "func"); _FUNCTIONCALL_NO_COPY_PRE(_14, b, "false-NEVER_RETURN-false" , "func"); _FUNCTIONCALL_NO_COPY_PRE(_14, a, "false-NEVER_RETURN-false" , "func"); _DEALLOC(_14); // isCopyEliminated of '_1' = true // isCopyEliminated of '_2' = true // isCopyEliminated of '_3' = true _14 = _func_(a, a_size, b, b_size, c, c_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_14)); _14_dealloc = true; } //assign %4 = %14 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(r, _14); //return _DEALLOC(a); _DEALLOC(b); _DEALLOC(c); _DEALLOC(r); _DEALLOC(_7); _DEALLOC(_10); _DEALLOC(_13); _DEALLOC(_14); exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_DEALLOC(a); _DECL_1DARRAY(b); _DECL_DEALLOC(b); _DECL_1DARRAY(r); _DECL_DEALLOC(r); int64_t _4; int64_t _5; _DECL_1DARRAY(_6); _DECL_DEALLOC(_6); int64_t _7; int64_t _8; _DECL_1DARRAY(_9); _DECL_DEALLOC(_9); _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); void* _11; int64_t _13; int64_t _14; void* _15; int64_t _17; int64_t _18; //const %4 = 2 : int _4 = 2; //const %5 = 2 : int _5 = 2; //arraygen %6 = [4; 5] : int[] _NEW1DARRAY_DEALLOC(_6, _4, _5, int64_t); //assign %1 = %6 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(a, _6); //const %7 = 2 : int _7 = 2; //const %8 = 2 : int _8 = 2; //arraygen %9 = [7; 8] : int[] _NEW1DARRAY_DEALLOC(_9, _7, _8, int64_t); //assign %2 = %9 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(b, _9); //invoke (%10) = (%1, %2) 2parameter_test4:func : function(int[],int[])->(int[]) { _FUNCTIONCALL_NO_COPY_PRE(_10, b, "false-NEVER_RETURN-true" , "func"); _FUNCTIONCALL_COPY_PRE(_10, a, "false-MAYBE_RETURN-true" , "func"); _DEALLOC(_10); void* tmp_a; _COPY_1DARRAY_PARAM(a, tmp_a, int64_t); // isCopyEliminated of '_1' = false // isCopyEliminated of '_2' = true _10 = _func_(tmp_a, a_size, b, b_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_10)); if( _10 == tmp_a ){ _10_dealloc = true; } else { _10_dealloc = true; free(tmp_a); } } //assign %3 = %10 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(r, _10); //fieldload %11 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %12 = %11 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %13 = 0 : int _13 = 0; //indexof %14 = %1, %13 : int[] _14=a[_13]; //indirectinvoke () = %12 (%14) : method(any)->() { printf("%"PRId64"\n", _14); } //fieldload %15 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %16 = %15 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %17 = 0 : int _17 = 0; //indexof %18 = %2, %17 : int[] _18=b[_17]; //indirectinvoke () = %16 (%18) : method(any)->() { printf("%"PRId64"\n", _18); } //return _DEALLOC(a); _DEALLOC(b); _DEALLOC(r); _DEALLOC(_6); _DEALLOC(_9); _DEALLOC(_10); exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_1DARRAY(b); _DECL_1DARRAY(c); int64_t _4; int64_t _5; int64_t _6; int64_t _7; int64_t _8; _DECL_1DARRAY(_9); _DECL_1DARRAY(_10); int64_t _11; int64_t _12; int64_t _13; int64_t _14; void* _15; _DECL_1DARRAY(_17); void* _18; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; int64_t _25; int64_t _26; _DECL_1DARRAY(_27); _DECL_1DARRAY(_28); int64_t _29; int64_t _30; int64_t _31; int64_t _32; int64_t _33; int64_t _34; int64_t _35; void* _36; _DECL_1DARRAY(_38); void* _39; int64_t _41; int64_t _42; void* _43; _DECL_1DARRAY(_45); void* _46; int64_t _48; int64_t _49; //const %4 = 0 : int _4 = 0; //const %5 = 0 : int _5 = 0; //const %6 = 0 : int _6 = 0; //const %7 = 0 : int _7 = 0; //const %8 = 0 : int _8 = 0; //newlist %9 = (%4, %5, %6, %7, %8) : int[] _NEW_1DARRAY_int64_t(_9, 5, 0); _9[0] = _4; _9[1] = _5; _9[2] = _6; _9[3] = _7; _9[4] = _8; //assign %1 = %9 : int[] _COPY_1DARRAY_int64_t(a, _9); //const %11 = 6 : int _11 = 6; //invoke (%10) = (%1, %11) FunctionCall2:func : function(int[],int)->(int[]) { void* tmp_s; _COPY_1DARRAY_PARAM(a, tmp_s, int64_t); _10 = _func_(tmp_s, a_size, _11, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_10)); } //assign %1 = %10 : int[] _COPY_1DARRAY_int64_t(a, _10); //assert { //const %12 = 2 : int _12 = 2; //indexof %13 = %1, %12 : int[] _13=a[_12]; //const %14 = 3 : int _14 = 3; //ifeq %13, %14 goto blklab2 : int if(_13==_14){goto blklab2;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab2 blklab2:; //assert } //fieldload %15 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %16 = %15 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %17 = [97,91,50,93,61] : int[] _NEW_1DARRAY_int64_t(_17, 5, 0); _17[0] = 97; _17[1] = 91; _17[2] = 50; _17[3] = 93; _17[4] = 61; //indirectinvoke () = %16 (%17) : method(int[])->() { printf_s(_17, _17_size); } //fieldload %18 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %19 = %18 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %20 = 2 : int _20 = 2; //indexof %21 = %1, %20 : int[] _21=a[_20]; //indirectinvoke () = %19 (%21) : method(any)->() { printf("%"PRId64"\n", _21); } //const %22 = 0 : int _22 = 0; //const %23 = 0 : int _23 = 0; //const %24 = 0 : int _24 = 0; //const %25 = 0 : int _25 = 0; //const %26 = 0 : int _26 = 0; //newlist %27 = (%22, %23, %24, %25, %26) : int[] _NEW_1DARRAY_int64_t(_27, 5, 0); _27[0] = _22; _27[1] = _23; _27[2] = _24; _27[3] = _25; _27[4] = _26; //assign %2 = %27 : int[] _COPY_1DARRAY_int64_t(b, _27); //const %29 = 1 : int _29 = 1; //invoke (%28) = (%2, %29) FunctionCall2:func : function(int[],int)->(int[]) { void* tmp_s; _COPY_1DARRAY_PARAM(b, tmp_s, int64_t); _28 = _func_(tmp_s, b_size, _29, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_28)); } //assign %3 = %28 : int[] _COPY_1DARRAY_int64_t(c, _28); //assert { //const %30 = 2 : int _30 = 2; //indexof %31 = %2, %30 : int[] _31=b[_30]; //const %32 = 0 : int _32 = 0; //ifeq %31, %32 goto blklab3 : int if(_31==_32){goto blklab3;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab3 blklab3:; //assert } //assert { //const %33 = 2 : int _33 = 2; //indexof %34 = %3, %33 : int[] _34=c[_33]; //const %35 = 0 : int _35 = 0; //ifeq %34, %35 goto blklab4 : int if(_34==_35){goto blklab4;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab4 blklab4:; //assert } //fieldload %36 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %37 = %36 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %38 = [98,91,50,93,61] : int[] _NEW_1DARRAY_int64_t(_38, 5, 0); _38[0] = 98; _38[1] = 91; _38[2] = 50; _38[3] = 93; _38[4] = 61; //indirectinvoke () = %37 (%38) : method(int[])->() { printf_s(_38, _38_size); } //fieldload %39 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %40 = %39 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %41 = 2 : int _41 = 2; //indexof %42 = %2, %41 : int[] _42=b[_41]; //indirectinvoke () = %40 (%42) : method(any)->() { printf("%"PRId64"\n", _42); } //fieldload %43 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %44 = %43 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %45 = [99,91,50,93,61] : int[] _NEW_1DARRAY_int64_t(_45, 5, 0); _45[0] = 99; _45[1] = 91; _45[2] = 50; _45[3] = 93; _45[4] = 61; //indirectinvoke () = %44 (%45) : method(int[])->() { printf_s(_45, _45_size); } //fieldload %46 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %47 = %46 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %48 = 2 : int _48 = 2; //indexof %49 = %3, %48 : int[] _49=c[_48]; //indirectinvoke () = %47 (%49) : method(any)->() { printf("%"PRId64"\n", _49); } //return exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_DEALLOC(a); _DECL_1DARRAY(b); _DECL_DEALLOC(b); _DECL_1DARRAY(c); _DECL_DEALLOC(c); _DECL_1DARRAY(r); _DECL_DEALLOC(r); int64_t _5; int64_t _6; _DECL_1DARRAY(_7); _DECL_DEALLOC(_7); int64_t _8; int64_t _9; _DECL_1DARRAY(_10); _DECL_DEALLOC(_10); int64_t _11; int64_t _12; _DECL_1DARRAY(_13); _DECL_DEALLOC(_13); _DECL_1DARRAY(_14); _DECL_DEALLOC(_14); int64_t _15; int64_t _16; int64_t _17; int64_t _18; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; int64_t _25; int64_t _26; //const %5 = 1 : int _5 = 1; //const %6 = 2 : int _6 = 2; //arraygen %7 = [5; 6] : int[] _NEW1DARRAY_DEALLOC(_7, _5, _6, int64_t); //assign %1 = %7 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(a, _7); //const %8 = 2 : int _8 = 2; //const %9 = 2 : int _9 = 2; //arraygen %10 = [8; 9] : int[] _NEW1DARRAY_DEALLOC(_10, _8, _9, int64_t); //assign %2 = %10 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(b, _10); //const %11 = 3 : int _11 = 3; //const %12 = 2 : int _12 = 2; //arraygen %13 = [11; 12] : int[] _NEW1DARRAY_DEALLOC(_13, _11, _12, int64_t); //assign %3 = %13 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(c, _13); //invoke (%14) = (%1, %2, %3) specialcase1:func : function(int[],int[],int[])->(int[]) { _FUNCTIONCALL_COPY_PRE(_14, c, 2, "liveness: c = true, readonly: c = false, return:c = MAYBE_RETURN" , "func"); _FUNCTIONCALL_COPY_PRE(_14, b, 1, "liveness: b = true, readonly: b = false, return:b = MAYBE_RETURN" , "func"); _FUNCTIONCALL_COPY_PRE(_14, a, 0, "liveness: a = true, readonly: a = false, return:a = MAYBE_RETURN" , "func"); _DEALLOC(_14); void* tmp_a; _COPY_1DARRAY_PARAM(a, tmp_a, int64_t); void* tmp_b; _COPY_1DARRAY_PARAM(b, tmp_b, int64_t); void* tmp_c; _COPY_1DARRAY_PARAM(c, tmp_c, int64_t); // isCopyEliminated of 'a at 0' = false // isCopyEliminated of 'b at 1' = false // isCopyEliminated of 'c at 2' = false _14 = _func_(tmp_a, a_size, tmp_b, b_size, tmp_c, c_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_14)); if( _14 == tmp_a ){ _14_dealloc = true; free(tmp_b); free(tmp_c); } else if( _14 == tmp_b ){ _14_dealloc = true; free(tmp_a); free(tmp_c); } else if( _14 == tmp_c ){ _14_dealloc = true; free(tmp_a); free(tmp_b); } else { _14_dealloc = true; free(tmp_a); free(tmp_b); free(tmp_c); } } //assign %4 = %14 : int[] // isCopyEliminated = true _TRANSFER_DEALLOC(r, _14); //assert { //const %15 = 0 : int _15 = 0; //indexof %16 = %1, %15 : int[] _16=a[_15]; //const %17 = 1 : int _17 = 1; //ifeq %16, %17 goto blklab2 : int if(_16==_17){goto blklab2;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab2 blklab2:; //assert } //assert { //const %18 = 0 : int _18 = 0; //indexof %19 = %2, %18 : int[] _19=b[_18]; //const %20 = 2 : int _20 = 2; //ifeq %19, %20 goto blklab3 : int if(_19==_20){goto blklab3;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab3 blklab3:; //assert } //assert { //const %21 = 0 : int _21 = 0; //indexof %22 = %3, %21 : int[] _22=c[_21]; //const %23 = 3 : int _23 = 3; //ifeq %22, %23 goto blklab4 : int if(_22==_23){goto blklab4;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab4 blklab4:; //assert } //assert { //const %24 = 0 : int _24 = 0; //indexof %25 = %4, %24 : int[] _25=r[_24]; //const %26 = 3 : int _26 = 3; //ifeq %25, %26 goto blklab5 : int if(_25==_26){goto blklab5;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab5 blklab5:; //assert } //return _DEALLOC(a); _DEALLOC(b); _DEALLOC(c); _DEALLOC(r); _DEALLOC(_7); _DEALLOC(_10); _DEALLOC(_13); _DEALLOC(_14); exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(a); _DECL_1DARRAY(b); _DECL_1DARRAY(c); int64_t _4; int64_t _5; int64_t _6; int64_t _7; int64_t _8; _DECL_1DARRAY(_9); _DECL_1DARRAY(_10); int64_t _11; int64_t _12; int64_t _13; void* _14; _DECL_1DARRAY(_16); void* _17; int64_t _19; int64_t _20; int64_t _21; int64_t _22; int64_t _23; int64_t _24; int64_t _25; _DECL_1DARRAY(_26); _DECL_1DARRAY(_27); int64_t _28; int64_t _29; int64_t _30; int64_t _31; int64_t _32; int64_t _33; void* _34; _DECL_1DARRAY(_36); void* _37; int64_t _39; int64_t _40; void* _41; _DECL_1DARRAY(_43); void* _44; int64_t _46; int64_t _47; //const %4 = 0 : int _4 = 0; //const %5 = 0 : int _5 = 0; //const %6 = 0 : int _6 = 0; //const %7 = 0 : int _7 = 0; //const %8 = 0 : int _8 = 0; //newlist %9 = (%4, %5, %6, %7, %8) : int[] _NEW_1DARRAY_int64_t(_9, 5, 0); _9[0] = _4; _9[1] = _5; _9[2] = _6; _9[3] = _7; _9[4] = _8; //assign %1 = %9 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(a, _9); //invoke (%10) = (%1) FunctionCall3:func : function(int[])->(int[]) { // isCopyEliminated of 'a at 0' = true _10 = _func_(a, a_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_10)); } //assign %1 = %10 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(a, _10); //assert { //const %11 = 2 : int _11 = 2; //indexof %12 = %1, %11 : int[] _12=a[_11]; //const %13 = 0 : int _13 = 0; //ifeq %12, %13 goto blklab0 : int if(_12==_13){goto blklab0;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab0 blklab0:; //assert } //fieldload %14 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %15 = %14 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %16 = [97,91,50,93,61] : int[] _NEW_1DARRAY_int64_t(_16, 5, 0); _16[0] = 97; _16[1] = 91; _16[2] = 50; _16[3] = 93; _16[4] = 61; //indirectinvoke () = %15 (%16) : method(int[])->() { printf_s(_16, _16_size); } //fieldload %17 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %18 = %17 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %19 = 2 : int _19 = 2; //indexof %20 = %1, %19 : int[] _20=a[_19]; //indirectinvoke () = %18 (%20) : method(any)->() { printf("%"PRId64"\n", _20); } //const %21 = 0 : int _21 = 0; //const %22 = 0 : int _22 = 0; //const %23 = 0 : int _23 = 0; //const %24 = 0 : int _24 = 0; //const %25 = 0 : int _25 = 0; //newlist %26 = (%21, %22, %23, %24, %25) : int[] _NEW_1DARRAY_int64_t(_26, 5, 0); _26[0] = _21; _26[1] = _22; _26[2] = _23; _26[3] = _24; _26[4] = _25; //assign %2 = %26 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(b, _26); //invoke (%27) = (%2) FunctionCall3:func : function(int[])->(int[]) { void* tmp_s; _COPY_1DARRAY_PARAM(b, tmp_s, int64_t); // isCopyEliminated of 'b at 0' = false _27 = _func_(tmp_s, b_size, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_27)); } //assign %3 = %27 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(c, _27); //assert { //const %28 = 2 : int _28 = 2; //indexof %29 = %2, %28 : int[] _29=b[_28]; //const %30 = 0 : int _30 = 0; //ifeq %29, %30 goto blklab1 : int if(_29==_30){goto blklab1;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab1 blklab1:; //assert } //assert { //const %31 = 2 : int _31 = 2; //indexof %32 = %3, %31 : int[] _32=c[_31]; //const %33 = 0 : int _33 = 0; //ifeq %32, %33 goto blklab2 : int if(_32==_33){goto blklab2;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab2 blklab2:; //assert } //fieldload %34 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %35 = %34 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %36 = [98,91,50,93,61] : int[] _NEW_1DARRAY_int64_t(_36, 5, 0); _36[0] = 98; _36[1] = 91; _36[2] = 50; _36[3] = 93; _36[4] = 61; //indirectinvoke () = %35 (%36) : method(int[])->() { printf_s(_36, _36_size); } //fieldload %37 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %38 = %37 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %39 = 2 : int _39 = 2; //indexof %40 = %2, %39 : int[] _40=b[_39]; //indirectinvoke () = %38 (%40) : method(any)->() { printf("%"PRId64"\n", _40); } //fieldload %41 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %42 = %41 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %43 = [99,91,50,93,61] : int[] _NEW_1DARRAY_int64_t(_43, 5, 0); _43[0] = 99; _43[1] = 91; _43[2] = 50; _43[3] = 93; _43[4] = 61; //indirectinvoke () = %42 (%43) : method(int[])->() { printf_s(_43, _43_size); } //fieldload %44 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %45 = %44 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %46 = 2 : int _46 = 2; //indexof %47 = %3, %46 : int[] _47=c[_46]; //indirectinvoke () = %45 (%47) : method(any)->() { printf("%"PRId64"\n", _47); } //return exit(0); }
int main(int argc, char** args){ _DECL_1DARRAY(x); _DECL_1DARRAY(tmp); int64_t _3; int64_t _4; _DECL_1DARRAY(_5); _DECL_1DARRAY(_6); int64_t _7; int64_t _8; int64_t _9; int64_t _10; void* _11; _DECL_1DARRAY(_13); void* _14; int64_t _16; int64_t _17; //const %3 = 2 : int _3 = 2; //const %4 = 3 : int _4 = 3; //arraygen %5 = [3; 4] : int[] _NEW_1DARRAY_int64_t(_5, _4, _3); //assign %1 = %5 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(x, _5); //const %7 = 11 : int _7 = 11; //invoke (%6) = (%1, %7) ResetMacro1:func : function(int[],int)->(int[]) { // isCopyEliminated of 'x at 0' = true _6 = _func_(x, x_size, _7, _1DARRAYSIZE_PARAM_CALLBYREFERENCE(_6)); } //assign %2 = %6 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(tmp, _6); //assign %1 = %2 : int[] // isCopyEliminated = true _UPDATE_1DARRAY(x, tmp); //assert { //const %8 = 0 : int _8 = 0; //indexof %9 = %1, %8 : int[] _9=x[_8]; //const %10 = 11 : int _10 = 11; //ifeq %9, %10 goto blklab0 : int if(_9==_10){goto blklab0;} //fail fprintf(stderr,"fail"); exit(-1); //.blklab0 blklab0:; //assert } //fieldload %11 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %12 = %11 print_s : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %13 = [120,91,48,93,32,61,32] : int[] _NEW_1DARRAY_int64_t(_13, 7, 0); _13[0] = 120; _13[1] = 91; _13[2] = 48; _13[3] = 93; _13[4] = 32; _13[5] = 61; _13[6] = 32; //indirectinvoke () = %12 (%13) : method(int[])->() { printf_s(_13, _13_size); } //fieldload %14 = %0 out : {int[][] args,{method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} out} //fieldload %15 = %14 println : {method(any)->() print,method(int[])->() print_s,method(any)->() println,method(int[])->() println_s} //const %16 = 0 : int _16 = 0; //indexof %17 = %1, %16 : int[] _17=x[_16]; //indirectinvoke () = %15 (%17) : method(any)->() { printf("%"PRId64"\n", _17); } //return exit(0); }