# # Expected IR output. # This file is semi-automatically generated by checking the output # in main.ir and then (if it's correct) copy-pasting it here. # # Copyright © 2024 Samuel Lidén Borell # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # ================================================== abi c function do_stuff( dptr ) -> void VAR arg0 dptr PARAM VAR obj1 {{int,{int}}} ADDR MUTABLE VAR obj2 {int,u8,bool} ADDR MUTABLE VAR obj3 {int,u8,bool} MUTABLE VAR tobj4 {int} TEMP VAR tobj5 {int,{int}} TEMP VAR tp7 dptr TEMP VAR tp8 dptr TEMP VAR tp9 dptr TEMP VAR t10 int TEMP VAR t11 bool TEMP VAR tobj14 {int,u8,bool} TEMP VAR tp15 dptr TEMP VAR t16 bool TEMP VAR tobj17 {int,u8,bool} TEMP ebb0: CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, OtherStuff_external_constructor CALL_GET_RETURN tobj4 MOVE tobj5, 123 MOVE obj1, 123 ADDRLOCAL tp7, obj1 ADDRELEM tp8, {{int,{int}}}, tp7~, 0, 0 ADDRELEM tp9, {int,{int}}, tp8~, 0, 0 DEREF t10, tp9 ADD t10, t10~, 1 MOVETOPTR tp9~, t10~ CALL_START 3 CALL_ARG arg0 CALL_ARG 123 CALL_ARG 0 CALL_FUNCDEF normal, OtherClosedType_external_method CALL_GET_RETURN t11 CONDTRAP t11~, z CALL_START 1 CALL_ARG 456 CALL_FUNCDEF normal, OtherClosedType_external_constructor CALL_GET_RETURN obj2 LOADGLOBAL obj3, D95 CALL_START 1 CALL_ARG 789 CALL_FUNCDEF normal, OtherClosedType_constructor CALL_GET_RETURN obj2 NOP DISCARD tobj14~ ADDRLOCAL tp15, obj2 CALL_START 3 CALL_ARG tp15~ CALL_ARG 1 CALL_ARG 0 CALL_FUNCDEF normal, OtherClosedType_method CALL_GET_RETURN t16 CONDTRAP t16~, z LOADGLOBAL obj3, D96 NOP DISCARD tobj17~ # ================================================== abi c function use_conflicting_type( dptr ) -> void VAR arg0 dptr PARAM VAR p1 dptr VAR t2 int TEMP VAR t3 bool TEMP ebb0: CALL_START 3 CALL_ARG arg0 CALL_ARG 3 CALL_ARG 5 CALL_FUNCDEF normal, NameConflictInOtherlibV4_set CALL_DISCARD_RETURN CALL_START 1 CALL_ARG arg0 CALL_FUNCDEF normal, NameConflictInOtherlibV4_get_sum CALL_GET_RETURN t2 EQ t3, t2~, 8 CONDTRAP t3~, z CALL_START 0 CALL_FUNCDEF normal, NameConflictInOtherlibV4_get_default CALL_GET_RETURN p1 # ================================================== abi c objglobal function SlulApp_main( dptr ) -> int VAR arg0 dptr PARAM UNUSED VAR p1 dptr VAR i2 int MUTABLE VAR t4 bool TEMP VAR t5 int TEMP VAR t6 bool TEMP VAR t7 int TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, constexpr_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, datadefs_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, definedness_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expressions_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, for_loops_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, funccalls_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, generics_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, return_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, statements_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, typecompat_test CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, make_some_thing CALL_GET_RETURN p1 MOVE i2, 0 EQ t4, 123, i2 CONDJUMP ebb2, t4~, z, _ ebb1: RETURN_ARG 2 ebb2: ADD t5, i2, 123 EQ t6, 123, t5~ CONDJUMP ebb5, t6~, z, _ JUMP ebb4 ebb3: CALL_START 1 CALL_ARG p1 CALL_FUNCDEF normal, free_some_thing CALL_DISCARD_RETURN RETURN_ARG 123 ebb4: JUMP ebb6 ebb5: LOADELEM t7, {int,dptr}, p1, 0, 0 RETURN_ARG t7~ ebb6: JUMP ebb3 # ================================================== abi c function constexpr_test() -> void ebb0: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP # ================================================== abi c function datadefs_test() -> void VAR tp0 dptr TEMP VAR t1 u8 TEMP VAR t2 bool TEMP VAR tp3 dptr TEMP VAR t4 i8 TEMP VAR t5 bool TEMP VAR tp6 dptr TEMP VAR t7 i8 TEMP VAR t8 bool TEMP VAR tp9 dptr TEMP VAR t10 i8 TEMP VAR t11 bool TEMP VAR tp12 dptr TEMP VAR t13 i8 TEMP VAR t14 bool TEMP VAR tp15 dptr TEMP VAR t16 i8 TEMP VAR t17 bool TEMP VAR tp18 dptr TEMP VAR t19 bool TEMP VAR tp20 dptr TEMP VAR t21 bool TEMP VAR t22 bool TEMP VAR tp23 dptr TEMP VAR t24 bool TEMP VAR tp25 dptr TEMP VAR t26 bool TEMP VAR t27 bool TEMP VAR tp28 dptr TEMP VAR tp29 dptr TEMP VAR t30 i8 TEMP VAR t31 bool TEMP VAR tp32 dptr TEMP VAR tp33 dptr TEMP VAR t34 i8 TEMP VAR t35 bool TEMP VAR tp36 dptr TEMP VAR tp37 dptr TEMP VAR t38 i8 TEMP VAR t39 bool TEMP VAR tp40 dptr TEMP VAR tp41 dptr TEMP VAR tp42 dptr TEMP VAR t43 i32 TEMP VAR t44 bool TEMP VAR tp45 dptr TEMP VAR tp46 dptr TEMP VAR tp47 dptr TEMP VAR t48 i32 TEMP VAR t49 bool TEMP VAR tp50 dptr TEMP VAR tp51 dptr TEMP VAR tp52 dptr TEMP VAR t53 i32 TEMP VAR t54 bool TEMP VAR tp55 dptr TEMP VAR tp56 dptr TEMP VAR tp57 dptr TEMP VAR t58 i32 TEMP VAR t59 bool TEMP VAR tp60 dptr TEMP VAR tp61 dptr TEMP VAR tp62 dptr TEMP VAR t63 i32 TEMP VAR t64 bool TEMP VAR tp65 dptr TEMP VAR tp66 dptr TEMP VAR tp67 dptr TEMP VAR t68 i32 TEMP VAR t69 bool TEMP VAR tp70 dptr TEMP VAR tp71 dptr TEMP VAR tp72 dptr TEMP VAR t73 i32 TEMP VAR t74 bool TEMP VAR tp75 dptr TEMP VAR t76 u8 TEMP VAR t77 bool TEMP VAR tp78 dptr TEMP VAR t79 int TEMP VAR t80 bool TEMP VAR tp81 dptr TEMP VAR tp82 dptr TEMP VAR t83 u8 TEMP VAR t84 bool TEMP VAR tp85 dptr TEMP VAR tp86 dptr TEMP VAR t87 u8 TEMP VAR t88 bool TEMP VAR tp89 dptr TEMP VAR tp90 dptr TEMP VAR t91 int TEMP VAR t92 bool TEMP VAR tp93 dptr TEMP VAR tp94 dptr TEMP VAR t95 int TEMP VAR t96 bool TEMP VAR tp97 dptr TEMP VAR tp98 dptr TEMP VAR t99 bool TEMP VAR tp100 dptr TEMP VAR tp101 dptr TEMP VAR t102 u8 TEMP VAR tp104 dptr TEMP VAR tp105 dptr TEMP VAR t106 int TEMP VAR tp108 dptr TEMP VAR tp109 dptr TEMP VAR tp110 dptr TEMP VAR t111 u8 TEMP VAR tp113 dptr TEMP VAR tp114 dptr TEMP VAR tp115 dptr TEMP VAR t116 u8 TEMP VAR t117 bool TEMP VAR tp118 dptr TEMP VAR tp119 dptr TEMP VAR tp120 dptr TEMP VAR t121 int TEMP VAR tp123 dptr TEMP VAR tp124 dptr TEMP VAR tp125 dptr TEMP VAR t126 int TEMP VAR t127 bool TEMP VAR tp128 dptr TEMP VAR tp129 dptr TEMP VAR tp130 dptr TEMP VAR t131 bool TEMP VAR t132 bool TEMP VAR tp133 dptr TEMP VAR tp134 dptr TEMP VAR t135 u8 TEMP VAR t136 bool TEMP VAR tp137 dptr TEMP VAR tp138 dptr TEMP VAR t139 int TEMP VAR t140 bool TEMP VAR tp141 dptr TEMP VAR tp142 dptr TEMP VAR tp143 dptr TEMP VAR t144 u8 TEMP VAR t145 bool TEMP VAR tp146 dptr TEMP VAR tp147 dptr TEMP VAR tp148 dptr TEMP VAR t149 u8 TEMP VAR t150 bool TEMP VAR tp151 dptr TEMP VAR tp152 dptr TEMP VAR tp153 dptr TEMP VAR t154 int TEMP VAR t155 bool TEMP VAR tp156 dptr TEMP VAR tp157 dptr TEMP VAR tp158 dptr TEMP VAR t159 int TEMP VAR t160 bool TEMP VAR tp161 dptr TEMP VAR tp162 dptr TEMP VAR tp163 dptr TEMP VAR t164 bool TEMP ebb0: NOP NOP NOP NOP NOP ADDRGLOBAL tp0, D24 LOADELEM t1, [1]u8, tp0~, 0, 0 EQ t2, t1~, 255 CONDTRAP t2~, z ADDRGLOBAL tp3, D25 LOADELEM t4, [1]i8, tp3~, 0, 0 EQ t5, t4~, -127 CONDTRAP t5~, z ADDRGLOBAL tp6, D25 LOADELEM t7, [1]i8, tp6~, 0, 0 LT t8, t7~, -126 CONDTRAP t8~, z ADDRGLOBAL tp9, D25 LOADELEM t10, [1]i8, tp9~, 0, 0 GT t11, t10~, -128 CONDTRAP t11~, z ADDRGLOBAL tp12, D25 LOADELEM t13, [1]i8, tp12~, 0, 0 LE t14, t13~, -127 CONDTRAP t14~, z ADDRGLOBAL tp15, D25 LOADELEM t16, [1]i8, tp15~, 0, 0 GE t17, t16~, -127 CONDTRAP t17~, z ADDRGLOBAL tp18, D26 LOADELEM t19, [10]bool, tp18~, 0, 0 CONDTRAP t19~, z ADDRGLOBAL tp20, D26 LOADELEM t21, [10]bool, tp20~, 1, 0 LNOT t22, t21~ CONDTRAP t22~, z ADDRGLOBAL tp23, D26 LOADELEM t24, [10]bool, tp23~, 8, 0 CONDTRAP t24~, z ADDRGLOBAL tp25, D26 LOADELEM t26, [10]bool, tp25~, 9, 0 LNOT t27, t26~ CONDTRAP t27~, z ADDRGLOBAL tp28, D27 ADDRELEM tp29, [3]i8, tp28~, 0, 0 LOADELEM t30, [1]i8, tp29~, 0, 0 EQ t31, t30~, 49 CONDTRAP t31~, z ADDRGLOBAL tp32, D27 ADDRELEM tp33, [3]i8, tp32~, 1, 0 LOADELEM t34, [1]i8, tp33~, 0, 0 EQ t35, t34~, 50 CONDTRAP t35~, z ADDRGLOBAL tp36, D27 ADDRELEM tp37, [3]i8, tp36~, 2, 0 LOADELEM t38, [1]i8, tp37~, 0, 0 EQ t39, t38~, 51 CONDTRAP t39~, z ADDRGLOBAL tp40, D28 ADDRELEM tp41, [24]i32, tp40~, 0, 0 ADDRELEM tp42, [8]i32, tp41~, 0, 0 LOADELEM t43, [4]i32, tp42~, 0, 0 EQ t44, t43~, 111 CONDTRAP t44~, z ADDRGLOBAL tp45, D28 ADDRELEM tp46, [24]i32, tp45~, 0, 0 ADDRELEM tp47, [8]i32, tp46~, 0, 0 LOADELEM t48, [4]i32, tp47~, 1, 0 EQ t49, t48~, -112 CONDTRAP t49~, z ADDRGLOBAL tp50, D28 ADDRELEM tp51, [24]i32, tp50~, 0, 0 ADDRELEM tp52, [8]i32, tp51~, 0, 0 LOADELEM t53, [4]i32, tp52~, 3, 0 EQ t54, t53~, -114 CONDTRAP t54~, z ADDRGLOBAL tp55, D28 ADDRELEM tp56, [24]i32, tp55~, 0, 0 ADDRELEM tp57, [8]i32, tp56~, 4, 0 LOADELEM t58, [4]i32, tp57~, 3, 0 EQ t59, t58~, 124 CONDTRAP t59~, z ADDRGLOBAL tp60, D28 ADDRELEM tp61, [24]i32, tp60~, 8, 0 ADDRELEM tp62, [8]i32, tp61~, 4, 0 LOADELEM t63, [4]i32, tp62~, 3, 0 EQ t64, t63~, 224 CONDTRAP t64~, z ADDRGLOBAL tp65, D28 ADDRELEM tp66, [24]i32, tp65~, 16, 0 ADDRELEM tp67, [8]i32, tp66~, 4, 0 LOADELEM t68, [4]i32, tp67~, 2, 0 EQ t69, t68~, -323 CONDTRAP t69~, z ADDRGLOBAL tp70, D28 ADDRELEM tp71, [24]i32, tp70~, 16, 0 ADDRELEM tp72, [8]i32, tp71~, 4, 0 LOADELEM t73, [4]i32, tp72~, 3, 0 EQ t74, t73~, 324 CONDTRAP t74~, z ADDRGLOBAL tp75, D29 LOADELEM t76, {u8,int,[2]u8,[2]int,{bool,{}}}, tp75~, 0, 0 EQ t77, t76~, 255 CONDTRAP t77~, z ADDRGLOBAL tp78, D29 LOADELEM t79, {u8,int,[2]u8,[2]int,{bool,{}}}, tp78~, 0, 1 EQ t80, t79~, 12345 CONDTRAP t80~, z ADDRGLOBAL tp81, D29 ADDRELEM tp82, {u8,int,[2]u8,[2]int,{bool,{}}}, tp81~, 0, 2 LOADELEM t83, [2]u8, tp82~, 0, 0 EQ t84, t83~, 12 CONDTRAP t84~, z ADDRGLOBAL tp85, D29 ADDRELEM tp86, {u8,int,[2]u8,[2]int,{bool,{}}}, tp85~, 0, 2 LOADELEM t87, [2]u8, tp86~, 1, 0 EQ t88, t87~, 34 CONDTRAP t88~, z ADDRGLOBAL tp89, D29 ADDRELEM tp90, {u8,int,[2]u8,[2]int,{bool,{}}}, tp89~, 0, 3 LOADELEM t91, [2]int, tp90~, 0, 0 EQ t92, t91~, -1 CONDTRAP t92~, z ADDRGLOBAL tp93, D29 ADDRELEM tp94, {u8,int,[2]u8,[2]int,{bool,{}}}, tp93~, 0, 3 LOADELEM t95, [2]int, tp94~, 1, 0 EQ t96, t95~, 2 CONDTRAP t96~, z ADDRGLOBAL tp97, D29 ADDRELEM tp98, {u8,int,[2]u8,[2]int,{bool,{}}}, tp97~, 0, 4 LOADELEM t99, {bool,{}}, tp98~, 0, 0 CONDTRAP t99~, z ADDRGLOBAL tp100, D30 ADDRELEM tp101, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp100~, 0, 0 LOADELEM t102, {u8,int,[2]u8,[2]int,{bool,{}}}, tp101~, 0, 0 NOP CONDTRAP t102~, nz ADDRGLOBAL tp104, D30 ADDRELEM tp105, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp104~, 0, 0 LOADELEM t106, {u8,int,[2]u8,[2]int,{bool,{}}}, tp105~, 0, 1 NOP CONDTRAP t106~, nz ADDRGLOBAL tp108, D30 ADDRELEM tp109, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp108~, 0, 0 ADDRELEM tp110, {u8,int,[2]u8,[2]int,{bool,{}}}, tp109~, 0, 2 LOADELEM t111, [2]u8, tp110~, 0, 0 NOP CONDTRAP t111~, nz ADDRGLOBAL tp113, D30 ADDRELEM tp114, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp113~, 0, 0 ADDRELEM tp115, {u8,int,[2]u8,[2]int,{bool,{}}}, tp114~, 0, 2 LOADELEM t116, [2]u8, tp115~, 1, 0 EQ t117, t116~, 255 CONDTRAP t117~, z ADDRGLOBAL tp118, D30 ADDRELEM tp119, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp118~, 0, 0 ADDRELEM tp120, {u8,int,[2]u8,[2]int,{bool,{}}}, tp119~, 0, 3 LOADELEM t121, [2]int, tp120~, 0, 0 NOP CONDTRAP t121~, nz ADDRGLOBAL tp123, D30 ADDRELEM tp124, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp123~, 0, 0 ADDRELEM tp125, {u8,int,[2]u8,[2]int,{bool,{}}}, tp124~, 0, 3 LOADELEM t126, [2]int, tp125~, 1, 0 EQ t127, t126~, -1 CONDTRAP t127~, z ADDRGLOBAL tp128, D30 ADDRELEM tp129, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp128~, 0, 0 ADDRELEM tp130, {u8,int,[2]u8,[2]int,{bool,{}}}, tp129~, 0, 4 LOADELEM t131, {bool,{}}, tp130~, 0, 0 LNOT t132, t131~ CONDTRAP t132~, z ADDRGLOBAL tp133, D30 ADDRELEM tp134, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp133~, 1, 0 LOADELEM t135, {u8,int,[2]u8,[2]int,{bool,{}}}, tp134~, 0, 0 EQ t136, t135~, 255 CONDTRAP t136~, z ADDRGLOBAL tp137, D30 ADDRELEM tp138, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp137~, 1, 0 LOADELEM t139, {u8,int,[2]u8,[2]int,{bool,{}}}, tp138~, 0, 1 EQ t140, t139~, 12345 CONDTRAP t140~, z ADDRGLOBAL tp141, D30 ADDRELEM tp142, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp141~, 1, 0 ADDRELEM tp143, {u8,int,[2]u8,[2]int,{bool,{}}}, tp142~, 0, 2 LOADELEM t144, [2]u8, tp143~, 0, 0 EQ t145, t144~, 12 CONDTRAP t145~, z ADDRGLOBAL tp146, D30 ADDRELEM tp147, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp146~, 1, 0 ADDRELEM tp148, {u8,int,[2]u8,[2]int,{bool,{}}}, tp147~, 0, 2 LOADELEM t149, [2]u8, tp148~, 1, 0 EQ t150, t149~, 221 CONDTRAP t150~, z ADDRGLOBAL tp151, D30 ADDRELEM tp152, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp151~, 1, 0 ADDRELEM tp153, {u8,int,[2]u8,[2]int,{bool,{}}}, tp152~, 0, 3 LOADELEM t154, [2]int, tp153~, 0, 0 EQ t155, t154~, -1 CONDTRAP t155~, z ADDRGLOBAL tp156, D30 ADDRELEM tp157, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp156~, 1, 0 ADDRELEM tp158, {u8,int,[2]u8,[2]int,{bool,{}}}, tp157~, 0, 3 LOADELEM t159, [2]int, tp158~, 1, 0 EQ t160, t159~, 2 CONDTRAP t160~, z ADDRGLOBAL tp161, D30 ADDRELEM tp162, [2]{u8,int,[2]u8,[2]int,{bool,{}}}, tp161~, 1, 0 ADDRELEM tp163, {u8,int,[2]u8,[2]int,{bool,{}}}, tp162~, 0, 4 LOADELEM t164, {bool,{}}, tp163~, 0, 0 CONDTRAP t164~, z # ================================================== abi c function definedness_test() -> void VAR len0 usize ADDR MUTABLE VAR fptr1 fptr VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP VAR t6 bool TEMP VAR t7 bool TEMP VAR t8 bool TEMP VAR t9 bool TEMP VAR t10 bool TEMP VAR t11 bool TEMP VAR t12 bool TEMP VAR t13 bool TEMP VAR t14 bool TEMP VAR t15 bool TEMP VAR t16 bool TEMP VAR t17 bool TEMP VAR t18 bool TEMP VAR t19 bool TEMP VAR t20 bool TEMP VAR t21 bool TEMP VAR t22 bool TEMP VAR t23 bool TEMP VAR t24 bool TEMP VAR t25 bool TEMP VAR t26 bool TEMP VAR t27 bool TEMP VAR t28 bool TEMP VAR t29 bool TEMP VAR t30 bool TEMP VAR t31 bool TEMP VAR t32 bool TEMP VAR t33 bool TEMP VAR t34 bool TEMP VAR t35 bool TEMP VAR t36 bool TEMP VAR t37 bool TEMP VAR t38 bool TEMP VAR t39 bool TEMP VAR t40 bool TEMP VAR t41 bool TEMP VAR t42 int TEMP VAR t43 bool TEMP VAR t44 int TEMP VAR t45 bool TEMP VAR t46 int TEMP VAR t47 bool TEMP VAR t48 int TEMP VAR t49 bool TEMP VAR t50 int TEMP VAR t51 bool TEMP VAR t52 int TEMP VAR t53 bool TEMP VAR t54 int TEMP VAR t55 bool TEMP VAR t56 int TEMP VAR t57 bool TEMP VAR t58 int TEMP VAR t60 int TEMP VAR t61 bool TEMP VAR t62 int TEMP VAR t63 bool TEMP VAR t64 int TEMP VAR t65 bool TEMP VAR t66 int TEMP VAR t67 bool TEMP VAR t68 int TEMP VAR t69 bool TEMP VAR t70 int TEMP VAR t71 bool TEMP VAR t72 int TEMP VAR t73 bool TEMP VAR t74 int TEMP VAR t75 bool TEMP VAR t76 int TEMP VAR t77 bool TEMP VAR t78 int TEMP VAR t79 bool TEMP VAR t80 int TEMP VAR t81 bool TEMP VAR t82 int TEMP VAR t83 bool TEMP VAR t84 int TEMP VAR t85 bool TEMP VAR t86 int TEMP VAR t87 bool TEMP VAR t88 int TEMP VAR t89 bool TEMP VAR t90 int TEMP VAR t91 bool TEMP VAR t92 int TEMP VAR t93 bool TEMP VAR t94 int TEMP VAR t95 bool TEMP VAR t96 int TEMP VAR t97 bool TEMP VAR t98 int TEMP VAR t99 bool TEMP VAR t100 int TEMP VAR t101 bool TEMP VAR t102 int TEMP VAR t103 bool TEMP VAR t104 int TEMP VAR t105 bool TEMP VAR t106 int TEMP VAR t107 bool TEMP VAR t108 int TEMP VAR t109 bool TEMP VAR t110 int TEMP VAR t111 bool TEMP VAR t112 int TEMP VAR t113 bool TEMP VAR t114 int TEMP VAR t115 bool TEMP VAR t116 int TEMP VAR t117 bool TEMP VAR t118 int TEMP VAR t119 bool TEMP VAR t120 int TEMP VAR t121 bool TEMP VAR t122 int TEMP VAR t123 bool TEMP VAR t124 int TEMP VAR t125 bool TEMP VAR t126 int TEMP VAR t127 bool TEMP VAR t128 int TEMP VAR t129 bool TEMP VAR t130 int TEMP VAR t131 bool TEMP VAR t132 int TEMP VAR t133 bool TEMP VAR t134 int TEMP VAR t135 bool TEMP VAR t136 int TEMP VAR t137 bool TEMP VAR t138 int TEMP VAR t139 bool TEMP VAR t140 u8 TEMP VAR tp143 dptr TEMP VAR t144 u8 TEMP VAR t145 bool TEMP VAR tp147 dptr TEMP VAR t148 u8 TEMP VAR t149 bool TEMP VAR t151 fptr TEMP VAR t152 int TEMP VAR t153 bool TEMP VAR t154 fptr TEMP VAR t155 fptr TEMP VAR t156 int TEMP VAR t157 bool TEMP VAR t158 fptr TEMP ebb0: CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_1 CALL_GET_RETURN t2 CONDTRAP t2~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_1 CALL_GET_RETURN t3 CONDTRAP t3~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_2 CALL_GET_RETURN t4 CONDTRAP t4~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_2 CALL_GET_RETURN t5 CONDTRAP t5~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_3 CALL_GET_RETURN t6 LNOT t7, t6~ CONDTRAP t7~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_3 CALL_GET_RETURN t8 CONDTRAP t8~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_4 CALL_GET_RETURN t9 LNOT t10, t9~ CONDTRAP t10~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_4 CALL_GET_RETURN t11 CONDTRAP t11~, z CALL_START 3 CALL_ARG 0 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if1 CALL_GET_RETURN t12 LNOT t13, t12~ CONDTRAP t13~, z CALL_START 3 CALL_ARG 0 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if1 CALL_GET_RETURN t14 CONDTRAP t14~, z CALL_START 3 CALL_ARG 0 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if1 CALL_GET_RETURN t15 LNOT t16, t15~ CONDTRAP t16~, z CALL_START 3 CALL_ARG 1 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if1 CALL_GET_RETURN t17 CONDTRAP t17~, z CALL_START 3 CALL_ARG 0 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if2 CALL_GET_RETURN t18 LNOT t19, t18~ CONDTRAP t19~, z CALL_START 3 CALL_ARG 0 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if2 CALL_GET_RETURN t20 CONDTRAP t20~, z CALL_START 3 CALL_ARG 1 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if2 CALL_GET_RETURN t21 LNOT t22, t21~ CONDTRAP t22~, z CALL_START 3 CALL_ARG 0 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if3 CALL_GET_RETURN t23 LNOT t24, t23~ CONDTRAP t24~, z CALL_START 3 CALL_ARG 1 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if3 CALL_GET_RETURN t25 CONDTRAP t25~, z CALL_START 3 CALL_ARG 0 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if4 CALL_GET_RETURN t26 CONDTRAP t26~, z CALL_START 3 CALL_ARG 1 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if4 CALL_GET_RETURN t27 CONDTRAP t27~, z CALL_START 2 CALL_ARG 0 CALL_ARG -3 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t28 LNOT t29, t28~ CONDTRAP t29~, z CALL_START 2 CALL_ARG 0 CALL_ARG -2 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t30 LNOT t31, t30~ CONDTRAP t31~, z CALL_START 2 CALL_ARG 0 CALL_ARG -1 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t32 CONDTRAP t32~, z CALL_START 2 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t33 LNOT t34, t33~ CONDTRAP t34~, z CALL_START 2 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t35 LNOT t36, t35~ CONDTRAP t36~, z CALL_START 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t37 CONDTRAP t37~, z CALL_START 2 CALL_ARG 0 CALL_ARG 10 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t38 LNOT t39, t38~ CONDTRAP t39~, z CALL_START 2 CALL_ARG 0 CALL_ARG 11 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t40 CONDTRAP t40~, z CALL_START 2 CALL_ARG 1 CALL_ARG 123 CALL_FUNCDEF normal, test_definedness_if5 CALL_GET_RETURN t41 CONDTRAP t41~, z CALL_START 2 CALL_ARG 0 CALL_ARG -1 CALL_FUNCDEF normal, test_definedness_if6 CALL_GET_RETURN t42 EQ t43, t42~, 789 CONDTRAP t43~, z CALL_START 2 CALL_ARG 1 CALL_ARG -456 CALL_FUNCDEF normal, test_definedness_if6 CALL_GET_RETURN t44 EQ t45, t44~, 456 CONDTRAP t45~, z CALL_START 2 CALL_ARG 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_if6 CALL_GET_RETURN t46 EQ t47, t46~, 123 CONDTRAP t47~, z CALL_START 2 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if6 CALL_GET_RETURN t48 EQ t49, t48~, -1 CONDTRAP t49~, z CALL_START 2 CALL_ARG 2 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if6 CALL_GET_RETURN t50 EQ t51, t50~, -2 CONDTRAP t51~, z CALL_START 2 CALL_ARG 5 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_if6 CALL_GET_RETURN t52 EQ t53, t52~, 5 CONDTRAP t53~, z CALL_START 2 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_block CALL_GET_RETURN t54 EQ t55, t54~, 11 CONDTRAP t55~, z CALL_START 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, test_definedness_block CALL_GET_RETURN t56 EQ t57, t56~, 2 CONDTRAP t57~, z CALL_START 2 CALL_ARG 0 CALL_ARG 3 CALL_FUNCDEF normal, test_definedness_block CALL_GET_RETURN t58 NOP CONDTRAP t58~, nz CALL_START 2 CALL_ARG 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_goto1 CALL_GET_RETURN t60 EQ t61, t60~, 1 CONDTRAP t61~, z CALL_START 2 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_goto1 CALL_GET_RETURN t62 EQ t63, t62~, 20 CONDTRAP t63~, z CALL_START 2 CALL_ARG 2 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_goto1 CALL_GET_RETURN t64 EQ t65, t64~, 2 CONDTRAP t65~, z CALL_START 2 CALL_ARG 2 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_goto1 CALL_GET_RETURN t66 EQ t67, t66~, 20 CONDTRAP t67~, z CALL_START 2 CALL_ARG 3 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_goto1 CALL_GET_RETURN t68 EQ t69, t68~, 3 CONDTRAP t69~, z CALL_START 2 CALL_ARG 3 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_goto1 CALL_GET_RETURN t70 EQ t71, t70~, 30 CONDTRAP t71~, z CALL_START 2 CALL_ARG 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_goto2 CALL_GET_RETURN t72 EQ t73, t72~, 1 CONDTRAP t73~, z CALL_START 2 CALL_ARG 2 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_goto2 CALL_GET_RETURN t74 EQ t75, t74~, 2 CONDTRAP t75~, z CALL_START 2 CALL_ARG 2 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_goto2 CALL_GET_RETURN t76 EQ t77, t76~, 20 CONDTRAP t77~, z CALL_START 2 CALL_ARG 3 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_goto2 CALL_GET_RETURN t78 EQ t79, t78~, 3 CONDTRAP t79~, z CALL_START 2 CALL_ARG 3 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_goto2 CALL_GET_RETURN t80 EQ t81, t80~, 20 CONDTRAP t81~, z CALL_START 2 CALL_ARG 4 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_goto2 CALL_GET_RETURN t82 EQ t83, t82~, 30 CONDTRAP t83~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_switch1 CALL_GET_RETURN t84 EQ t85, t84~, 123 CONDTRAP t85~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, test_definedness_switch1 CALL_GET_RETURN t86 EQ t87, t86~, 456 CONDTRAP t87~, z CALL_START 1 CALL_ARG -1 CALL_FUNCDEF normal, test_definedness_switch1 CALL_GET_RETURN t88 EQ t89, t88~, 789 CONDTRAP t89~, z CALL_START 2 CALL_ARG 1 CALL_ARG -5 CALL_FUNCDEF normal, test_definedness_switch2 CALL_GET_RETURN t90 EQ t91, t90~, 5 CONDTRAP t91~, z CALL_START 2 CALL_ARG 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch2 CALL_GET_RETURN t92 EQ t93, t92~, 111 CONDTRAP t93~, z CALL_START 2 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_switch2 CALL_GET_RETURN t94 EQ t95, t94~, 222 CONDTRAP t95~, z CALL_START 2 CALL_ARG 2 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch2 CALL_GET_RETURN t96 EQ t97, t96~, 333 CONDTRAP t97~, z CALL_START 2 CALL_ARG 3 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch2 CALL_GET_RETURN t98 EQ t99, t98~, 444 CONDTRAP t99~, z CALL_START 2 CALL_ARG 4 CALL_ARG -234 CALL_FUNCDEF normal, test_definedness_switch2 CALL_GET_RETURN t100 EQ t101, t100~, 4 CONDTRAP t101~, z CALL_START 2 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t102 EQ t103, t102~, 789 CONDTRAP t103~, z CALL_START 2 CALL_ARG 1 CALL_ARG -4 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t104 EQ t105, t104~, 4 CONDTRAP t105~, z CALL_START 2 CALL_ARG 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t106 EQ t107, t106~, 123 CONDTRAP t107~, z CALL_START 2 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t108 EQ t109, t108~, -1 CONDTRAP t109~, z CALL_START 2 CALL_ARG 2 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t110 EQ t111, t110~, -2 CONDTRAP t111~, z CALL_START 2 CALL_ARG 3 CALL_ARG 1 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t112 EQ t113, t112~, 789 CONDTRAP t113~, z CALL_START 2 CALL_ARG 4 CALL_ARG 321 CALL_FUNCDEF normal, test_definedness_switch3 CALL_GET_RETURN t114 EQ t115, t114~, 4 CONDTRAP t115~, z CALL_START 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, test_definedness_switch4 CALL_GET_RETURN t116 EQ t117, t116~, 789 CONDTRAP t117~, z CALL_START 2 CALL_ARG 1 CALL_ARG 10 CALL_FUNCDEF normal, test_definedness_switch4 CALL_GET_RETURN t118 EQ t119, t118~, 123 CONDTRAP t119~, z CALL_START 2 CALL_ARG 1 CALL_ARG 11 CALL_FUNCDEF normal, test_definedness_switch4 CALL_GET_RETURN t120 EQ t121, t120~, -1 CONDTRAP t121~, z CALL_START 2 CALL_ARG 5 CALL_ARG 11 CALL_FUNCDEF normal, test_definedness_switch4 CALL_GET_RETURN t122 EQ t123, t122~, 5 CONDTRAP t123~, z CALL_START 2 CALL_ARG 1 CALL_ARG 10 CALL_FUNCDEF normal, test_definedness_switch5 CALL_GET_RETURN t124 EQ t125, t124~, 123 CONDTRAP t125~, z CALL_START 2 CALL_ARG 1 CALL_ARG 11 CALL_FUNCDEF normal, test_definedness_switch5 CALL_GET_RETURN t126 EQ t127, t126~, -1 CONDTRAP t127~, z CALL_START 2 CALL_ARG 2 CALL_ARG 11 CALL_FUNCDEF normal, test_definedness_switch5 CALL_GET_RETURN t128 EQ t129, t128~, -2 CONDTRAP t129~, z CALL_START 2 CALL_ARG 3 CALL_ARG 11 CALL_FUNCDEF normal, test_definedness_switch5 CALL_GET_RETURN t130 EQ t131, t130~, 789 CONDTRAP t131~, z CALL_START 2 CALL_ARG 11 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch5 CALL_GET_RETURN t132 EQ t133, t132~, -2 CONDTRAP t133~, z CALL_START 2 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch6 CALL_GET_RETURN t134 EQ t135, t134~, 3 CONDTRAP t135~, z CALL_START 2 CALL_ARG 123 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_switch6 CALL_GET_RETURN t136 EQ t137, t136~, 3 CONDTRAP t137~, z CALL_START 2 CALL_ARG 123 CALL_ARG 456 CALL_FUNCDEF normal, test_definedness_switch6 CALL_GET_RETURN t138 EQ t139, t138~, 3 CONDTRAP t139~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, test_definedness_nullability_index CALL_GET_RETURN t140 NOP CONDTRAP t140~, nz MOVE len0, 1 ADDRLOCAL tp143, len0 NOP CALL_START 1 CALL_ARG tp143~ CALL_FUNCDEF normal, test_definedness_nullability_index CALL_GET_RETURN t144 EQ t145, t144~, 22 CONDTRAP t145~, z MOVE len0, 2 ADDRLOCAL tp147, len0 NOP CALL_START 1 CALL_ARG tp147~ CALL_FUNCDEF normal, test_definedness_nullability_index CALL_GET_RETURN t148 EQ t149, t148~, 33 CONDTRAP t149~, z ADDRFUNC fptr1, definedness_testfunc ADDRFUNC t151, definedness_testfunc CALL_START 3 CALL_ARG 0 CALL_ARG t151~ CALL_ARG 123 CALL_FUNCDEF normal, test_definedness_nullability_funcref CALL_GET_RETURN t152 EQ t153, t152~, 99 CONDTRAP t153~, z ADDRFUNC t154, definedness_testfunc ADDRFUNC t155, definedness_testfunc CALL_START 3 CALL_ARG t154~ CALL_ARG t155~ CALL_ARG 123 CALL_FUNCDEF normal, test_definedness_nullability_funcref CALL_GET_RETURN t156 EQ t157, t156~, 99 CONDTRAP t157~, z ADDRFUNC t158, definedness_testfunc CALL_START 3 CALL_ARG 0 CALL_ARG t158~ CALL_ARG 123 CALL_FUNCDEF normal, test_definedness_nullability_funcref CALL_DISCARD_RETURN DISCARD t158~ # ================================================== abi c function expressions_test() -> void ebb0: CALL_START 0 CALL_FUNCDEF normal, expr_pointers CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_booleans CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_comparisons_int CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_comparisons_bool CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_typescopes CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_calls CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_struct_initf CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_init_copy CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_structs CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_arrays CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_array_pointer CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_deeply_nested CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_backend_optimize CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_missing_indentation CALL_DISCARD_RETURN # ================================================== abi c function for_loops_test() -> void ebb0: # TODO IR generation of for loops is not implemented # CALL_START 0 # CALL_FUNCDEF normal, for_loops_array # CALL_DISCARD_RETURN # ================================================== abi c function funccalls_test() -> void ebb0: CALL_START 0 CALL_FUNCDEF normal, test_function_calls CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, test_method_calls_byvalue CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, test_method_calls_byref CALL_DISCARD_RETURN # ================================================== abi c function generics_test() -> void ebb0: # TODO fails due to various unimplemented stuff # CALL_START 0 # CALL_FUNCDEF normal, generics_test1 # CALL_DISCARD_RETURN # ================================================== abi c function return_test() -> void VAR t0 bool TEMP VAR t1 bool TEMP VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP VAR t6 bool TEMP VAR t7 bool TEMP VAR t8 bool TEMP VAR t9 bool TEMP VAR t10 bool TEMP VAR t11 bool TEMP VAR t12 bool TEMP VAR t13 bool TEMP VAR t14 bool TEMP VAR t15 bool TEMP VAR t16 bool TEMP VAR t17 bool TEMP VAR t18 bool TEMP VAR t19 bool TEMP VAR t20 bool TEMP VAR t21 bool TEMP VAR t22 bool TEMP VAR t23 bool TEMP VAR t24 bool TEMP VAR t25 bool TEMP VAR t26 bool TEMP VAR t27 bool TEMP VAR t28 bool TEMP VAR t29 int TEMP VAR t30 bool TEMP VAR t31 int TEMP VAR t32 bool TEMP VAR t33 int TEMP VAR t34 bool TEMP VAR t35 int TEMP VAR t36 bool TEMP VAR t37 int TEMP VAR t38 bool TEMP VAR t39 int TEMP VAR t40 bool TEMP VAR t41 int TEMP VAR t42 bool TEMP VAR t43 int TEMP VAR t44 bool TEMP VAR t45 bool TEMP VAR t46 bool TEMP VAR t47 bool TEMP VAR t48 bool TEMP VAR t49 bool TEMP VAR t50 bool TEMP VAR t51 bool TEMP VAR t52 bool TEMP VAR t53 bool TEMP VAR t54 bool TEMP VAR t55 int TEMP VAR t56 bool TEMP VAR t57 int TEMP VAR t58 bool TEMP VAR t59 int TEMP VAR t60 bool TEMP VAR t61 int TEMP VAR t62 bool TEMP VAR t63 int TEMP VAR t64 bool TEMP VAR t65 int TEMP VAR t66 bool TEMP VAR t67 int TEMP VAR t68 bool TEMP VAR t69 int TEMP VAR t70 bool TEMP VAR t71 int TEMP VAR t72 bool TEMP VAR t73 int TEMP VAR t74 bool TEMP VAR t75 int TEMP VAR t76 bool TEMP VAR t77 int TEMP VAR t78 bool TEMP VAR t79 int TEMP VAR t80 bool TEMP VAR t81 int TEMP VAR t82 bool TEMP VAR t83 int TEMP VAR t84 bool TEMP VAR t85 int TEMP VAR t86 bool TEMP VAR t87 int TEMP VAR t88 bool TEMP VAR t89 int TEMP VAR t90 bool TEMP VAR t91 bool TEMP VAR t92 bool TEMP VAR t93 bool TEMP VAR t94 bool TEMP VAR t95 bool TEMP VAR t96 bool TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, retflow_none1 CALL_DISCARD_RETURN CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_none2 CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, retflow_simple1 CALL_GET_RETURN t0 CONDTRAP t0~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, retflow_simple2 CALL_GET_RETURN t1 CONDTRAP t1~, z CALL_START 0 CALL_FUNCDEF normal, retflow_nested CALL_GET_RETURN t2 CONDTRAP t2~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_if CALL_GET_RETURN t3 CONDTRAP t3~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_if CALL_GET_RETURN t4 LNOT t5, t4~ CONDTRAP t5~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t6 CONDTRAP t6~, z CALL_START 1 CALL_ARG -300 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t7 CONDTRAP t7~, z CALL_START 1 CALL_ARG -30 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t8 CONDTRAP t8~, z CALL_START 1 CALL_ARG -3 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t9 CONDTRAP t9~, z CALL_START 1 CALL_ARG -101 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t10 LNOT t11, t10~ CONDTRAP t11~, z CALL_START 1 CALL_ARG -11 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t12 LNOT t13, t12~ CONDTRAP t13~, z CALL_START 1 CALL_ARG -1 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t14 LNOT t15, t14~ CONDTRAP t15~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_elseif CALL_GET_RETURN t16 CONDTRAP t16~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t17 CONDTRAP t17~, z CALL_START 1 CALL_ARG -30 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t18 CONDTRAP t18~, z CALL_START 1 CALL_ARG -3 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t19 CONDTRAP t19~, z CALL_START 1 CALL_ARG -11 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t20 LNOT t21, t20~ CONDTRAP t21~, z CALL_START 1 CALL_ARG -1 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t22 LNOT t23, t22~ CONDTRAP t23~, z CALL_START 1 CALL_ARG 99 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t24 LNOT t25, t24~ CONDTRAP t25~, z CALL_START 1 CALL_ARG 101 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t26 CONDTRAP t26~, z CALL_START 1 CALL_ARG 100 CALL_FUNCDEF normal, retflow_elseif_nested CALL_GET_RETURN t27 LNOT t28, t27~ CONDTRAP t28~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_if_goto1 CALL_GET_RETURN t29 EQ t30, t29~, 11 CONDTRAP t30~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_if_goto1 CALL_GET_RETURN t31 EQ t32, t31~, 22 CONDTRAP t32~, z CALL_START 1 CALL_ARG 3 CALL_FUNCDEF normal, retflow_if_goto1 CALL_GET_RETURN t33 EQ t34, t33~, 33 CONDTRAP t34~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, retflow_if_goto1 CALL_GET_RETURN t35 EQ t36, t35~, 33 CONDTRAP t36~, z CALL_START 1 CALL_ARG 1073741825 CALL_FUNCDEF normal, retflow_if_goto1 CALL_GET_RETURN t37 EQ t38, t37~, 33 CONDTRAP t38~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_if_goto2 CALL_GET_RETURN t39 EQ t40, t39~, 11 CONDTRAP t40~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_if_goto2 CALL_GET_RETURN t41 EQ t42, t41~, 33 CONDTRAP t42~, z CALL_START 1 CALL_ARG 3 CALL_FUNCDEF normal, retflow_if_goto2 CALL_GET_RETURN t43 EQ t44, t43~, 33 CONDTRAP t44~, z CALL_START 1 CALL_ARG 100 CALL_FUNCDEF normal, retflow_while_not_endless1 CALL_GET_RETURN t45 CONDTRAP t45~, z CALL_START 1 CALL_ARG 90 CALL_FUNCDEF normal, retflow_while_not_endless1 CALL_GET_RETURN t46 CONDTRAP t46~, z CALL_START 1 CALL_ARG 29 CALL_FUNCDEF normal, retflow_while_not_endless1 CALL_GET_RETURN t47 CONDTRAP t47~, z CALL_START 1 CALL_ARG 20 CALL_FUNCDEF normal, retflow_while_not_endless1 CALL_GET_RETURN t48 CONDTRAP t48~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, retflow_while_not_endless2 CALL_GET_RETURN t49 LNOT t50, t49~ CONDTRAP t50~, z CALL_START 1 CALL_ARG 31 CALL_FUNCDEF normal, retflow_while_not_endless2 CALL_GET_RETURN t51 LNOT t52, t51~ CONDTRAP t52~, z CALL_START 1 CALL_ARG 20 CALL_FUNCDEF normal, retflow_while_not_endless2 CALL_GET_RETURN t53 LNOT t54, t53~ CONDTRAP t54~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_switch1 CALL_GET_RETURN t55 EQ t56, t55~, 11 CONDTRAP t56~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, retflow_switch1 CALL_GET_RETURN t57 EQ t58, t57~, 99 CONDTRAP t58~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_switch1 CALL_GET_RETURN t59 EQ t60, t59~, 99 CONDTRAP t60~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_switch2 CALL_GET_RETURN t61 EQ t62, t61~, 11 CONDTRAP t62~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_switch2 CALL_GET_RETURN t63 EQ t64, t63~, 22 CONDTRAP t64~, z CALL_START 1 CALL_ARG 3 CALL_FUNCDEF normal, retflow_switch2 CALL_GET_RETURN t65 EQ t66, t65~, 33 CONDTRAP t66~, z CALL_START 1 CALL_ARG 4 CALL_FUNCDEF normal, retflow_switch2 CALL_GET_RETURN t67 EQ t68, t67~, 99 CONDTRAP t68~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, retflow_switch2 CALL_GET_RETURN t69 EQ t70, t69~, 99 CONDTRAP t70~, z CALL_START 2 CALL_ARG -1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t71 EQ t72, t71~, 1 CONDTRAP t72~, z CALL_START 2 CALL_ARG -1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t73 EQ t74, t73~, 9 CONDTRAP t74~, z CALL_START 2 CALL_ARG 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t75 EQ t76, t75~, 11 CONDTRAP t76~, z CALL_START 2 CALL_ARG 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t77 EQ t78, t77~, 22 CONDTRAP t78~, z CALL_START 2 CALL_ARG 1 CALL_ARG 3 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t79 EQ t80, t79~, 99 CONDTRAP t80~, z CALL_START 2 CALL_ARG 0 CALL_ARG 1 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t81 EQ t82, t81~, 111 CONDTRAP t82~, z CALL_START 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t83 EQ t84, t83~, 222 CONDTRAP t84~, z CALL_START 2 CALL_ARG 0 CALL_ARG 3 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t85 EQ t86, t85~, 333 CONDTRAP t86~, z CALL_START 2 CALL_ARG 0 CALL_ARG 4 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t87 EQ t88, t87~, 999 CONDTRAP t88~, z CALL_START 2 CALL_ARG 0 CALL_ARG 0 CALL_FUNCDEF normal, retflow_switch3 CALL_GET_RETURN t89 EQ t90, t89~, 999 CONDTRAP t90~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_gototarget_simple CALL_GET_RETURN t91 LNOT t92, t91~ CONDTRAP t92~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_gototarget_simple CALL_GET_RETURN t93 CONDTRAP t93~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, retflow_gototarget_loop CALL_GET_RETURN t94 LNOT t95, t94~ CONDTRAP t95~, z CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, retflow_gototarget_loop CALL_GET_RETURN t96 CONDTRAP t96~, z # ================================================== abi c function statements_test() -> void VAR t0 int TEMP VAR t1 bool TEMP VAR t2 int TEMP VAR t3 bool TEMP VAR t4 int TEMP VAR t5 bool TEMP VAR t6 int TEMP VAR t7 bool TEMP VAR t8 int TEMP VAR t9 bool TEMP ebb0: CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, test_statements CALL_GET_RETURN t0 EQ t1, t0~, 29 CONDTRAP t1~, z CALL_START 1 CALL_ARG 3 CALL_FUNCDEF normal, test_statements CALL_GET_RETURN t2 EQ t3, t2~, -4 CONDTRAP t3~, z CALL_START 1 CALL_ARG -1 CALL_FUNCDEF normal, test_empty_if CALL_GET_RETURN t4 EQ t5, t4~, 999 CONDTRAP t5~, z CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, test_empty_if CALL_GET_RETURN t6 EQ t7, t6~, 999 CONDTRAP t7~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, test_empty_if CALL_GET_RETURN t8 EQ t9, t8~, 999 CONDTRAP t9~, z # ================================================== abi c function typecompat_test() -> void ebb0: CALL_START 0 CALL_FUNCDEF normal, typecompat_builtins CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, typecompat_builtins_stack CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, typecompat_reftargets CALL_DISCARD_RETURN # ================================================== abi c function test_definedness_1( bool ) -> bool VAR arg0 bool PARAM UNUSED VAR b1 bool ebb0: MOVE b1, 1 RETURN_ARG 1 # ================================================== abi c function test_definedness_2( bool ) -> bool VAR arg0 bool PARAM UNUSED VAR b1 bool MUTABLE ebb0: MOVE b1, 1 RETURN_ARG b1 # ================================================== abi c function test_definedness_3( bool ) -> bool VAR arg0 bool PARAM VAR b1 bool MUTABLE ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: MOVE b1, 1 JUMP ebb3 ebb2: MOVE b1, 0 ebb3: RETURN_ARG b1 # ================================================== abi c function test_definedness_4( bool ) -> bool VAR arg0 bool PARAM VAR b1 bool MUTABLE ebb0: JUMP ebb2 ebb1: ebb2: MOVE b1, 0 JUMP ebb3 ebb3: CONDJUMP ebb5, arg0, z, _ ebb4: MOVE b1, 1 JUMP ebb6 ebb5: MOVE b1, 0 ebb6: RETURN_ARG b1 ebb7: # ================================================== abi c function test_definedness_if1( bool bool bool ) -> bool VAR arg0 bool PARAM VAR arg1 bool PARAM VAR arg2 bool PARAM VAR b3 bool MUTABLE VAR t4 bool TEMP ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: MOVE b3, 1 JUMP ebb3 ebb2: LNOT t4, arg1 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: RETURN_ARG b3 ebb4: MOVE b3, arg2 JUMP ebb6 ebb5: MOVE b3, 0 ebb6: JUMP ebb3 # ================================================== abi c function test_definedness_if2( bool bool bool ) -> bool VAR arg0 bool PARAM VAR arg1 bool PARAM VAR arg2 bool PARAM VAR b3 bool MUTABLE VAR t4 bool TEMP ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: RETURN_ARG 0 ebb2: LNOT t4, arg1 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: RETURN_ARG b3 ebb4: MOVE b3, arg2 JUMP ebb6 ebb5: MOVE b3, 0 ebb6: JUMP ebb3 # ================================================== abi c function test_definedness_if3( bool bool bool ) -> bool VAR arg0 bool PARAM VAR arg1 bool PARAM VAR arg2 bool PARAM UNUSED VAR b3 bool MUTABLE VAR t4 bool TEMP ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: MOVE b3, 1 JUMP ebb3 ebb2: LNOT t4, arg1 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: RETURN_ARG b3 ebb4: RETURN_ARG 0 ebb5: MOVE b3, 0 ebb6: JUMP ebb3 # ================================================== abi c function test_definedness_if4( bool bool bool ) -> bool VAR arg0 bool PARAM VAR arg1 bool PARAM VAR arg2 bool PARAM VAR b3 bool MUTABLE VAR t4 bool TEMP ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: MOVE b3, 1 JUMP ebb3 ebb2: LNOT t4, arg1 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: RETURN_ARG b3 ebb4: MOVE b3, arg2 JUMP ebb6 ebb5: RETURN_ARG 0 ebb6: JUMP ebb3 # ================================================== abi c function test_definedness_if5( bool int ) -> bool VAR arg0 bool PARAM VAR arg1 int PARAM VAR b2 bool MUTABLE VAR i3 int VAR t5 bool TEMP VAR t6 bool TEMP VAR t7 bool TEMP VAR t8 bool TEMP VAR t10 bool TEMP ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: MOVE b2, 1 JUMP ebb3 ebb2: NOP CONDJUMP ebb5, arg1, gez, _ JUMP ebb4 ebb3: RETURN_ARG b2 ebb4: EQ t5, arg1, -3 CONDJUMP ebb8, t5~, z, _ JUMP ebb7 ebb5: GE t7, arg1, 10 CONDJUMP ebb11, t7~, z, _ JUMP ebb10 ebb6: JUMP ebb3 ebb7: RETURN_ARG 0 ebb8: EQ b2, arg1, -1 NOP DISCARD t6~ ebb9: JUMP ebb6 ebb10: MOVE b2, 0 EQ t8, arg1, 11 CONDJUMP ebb14, t8~, z, _ JUMP ebb13 ebb11: ADD i3, arg1, 1 EQ t10, i3, 3 CONDJUMP ebb16, t10~, z, _ JUMP ebb15 ebb12: JUMP ebb6 ebb13: MOVE b2, 1 ebb14: JUMP ebb12 ebb15: MOVE b2, 1 JUMP ebb17 ebb16: RETURN_ARG 0 ebb17: JUMP ebb12 # ================================================== abi c function test_definedness_if6( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR i2 int MUTABLE VAR t3 bool TEMP VAR t4 bool TEMP VAR t7 int TEMP VAR t8 bool TEMP ebb0: LT t3, arg0, 4 CONDJUMP ebb2, t3~, z, _ ebb1: EQ t4, arg0, 1 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb2: MOVE i2, arg0 ebb3: RETURN_ARG i2 ebb4: NOP CONDJUMP ebb8, arg1, nz, _ JUMP ebb7 ebb5: EQ t8, arg0, 2 CONDJUMP ebb14, t8~, z, _ JUMP ebb13 ebb6: JUMP ebb3 ebb7: MOVE i2, 123 JUMP ebb9 ebb8: NOP CONDJUMP ebb11, arg1, gez, _ JUMP ebb10 ebb9: JUMP ebb6 ebb10: NEG i2, arg1 NOP DISCARD t7~ JUMP ebb12 ebb11: RETURN_ARG -1 ebb12: JUMP ebb9 ebb13: RETURN_ARG -2 ebb14: MOVE i2, 789 ebb15: JUMP ebb6 # ================================================== abi c function test_definedness_block( int int ) -> int VAR arg0 int PARAM UNUSED VAR arg1 int PARAM VAR i2 int MUTABLE VAR t3 bool TEMP VAR t4 bool TEMP ebb0: EQ t3, arg1, 1 CONDJUMP ebb2, t3~, z, _ ebb1: RETURN_ARG 11 ebb2: EQ t4, arg1, 2 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: RETURN_ARG i2 ebb4: MOVE i2, 2 JUMP ebb6 ebb5: RETURN_ARG 0 ebb6: JUMP ebb3 # ================================================== abi c function test_definedness_goto1( int bool ) -> int VAR arg0 int PARAM VAR arg1 bool PARAM VAR i2 int MUTABLE VAR i3 int MUTABLE VAR t4 bool TEMP VAR t5 bool TEMP ebb0: EQ t4, arg0, 1 CONDJUMP ebb2, t4~, z, _ ebb1: MOVE i2, 1 JUMP ebb9 ebb2: EQ t5, arg0, 2 CONDJUMP ebb5, t5~, z, _ JUMP ebb4 ebb3: CONDJUMP ebb8, arg1, z, _ JUMP ebb7 ebb4: MOVE i2, 2 JUMP ebb9 ebb5: MOVE i2, 3 MOVE i3, 30 ebb6: JUMP ebb3 ebb7: RETURN_ARG i3 ebb8: RETURN_ARG i2 ebb9: MOVE i3, 20 JUMP ebb6 # ================================================== abi c function test_definedness_goto2( int bool ) -> int VAR arg0 int PARAM VAR arg1 bool PARAM VAR i2 int MUTABLE VAR i3 int MUTABLE VAR i4 int MUTABLE VAR t5 bool TEMP VAR t6 bool TEMP VAR t7 bool TEMP ebb0: EQ t5, arg0, 1 CONDJUMP ebb2, t5~, z, _ ebb1: MOVE i2, 1 MOVE i3, 1 JUMP ebb13 ebb2: EQ t6, arg0, 2 CONDJUMP ebb5, t6~, z, _ JUMP ebb4 ebb3: CONDJUMP ebb11, arg1, z, _ JUMP ebb10 ebb4: MOVE i2, 2 JUMP ebb12 ebb5: EQ t7, arg0, 3 CONDJUMP ebb8, t7~, z, _ JUMP ebb7 ebb6: JUMP ebb3 ebb7: MOVE i2, 3 JUMP ebb12 ebb8: MOVE i2, 3 MOVE i3, 30 JUMP ebb13 ebb9: JUMP ebb6 ebb10: RETURN_ARG i3 ebb11: RETURN_ARG i2 ebb12: MOVE i3, 20 JUMP ebb13 ebb13: MOVE i4, 10 JUMP ebb3 # ================================================== abi c function test_definedness_switch1( int ) -> int VAR arg0 int PARAM VAR i1 int MUTABLE VAR t2 int TEMP ebb0: MOVE t2, arg0 COMPAREJUMP ebb2, t2~, 2, z, unlikely COMPAREJUMP ebb3, t2~, 1, z, unlikely JUMP ebb1 ebb1: MOVE i1, 789 JUMP ebb4 ebb2: MOVE i1, 456 JUMP ebb4 ebb3: MOVE i1, 123 JUMP ebb4 ebb4: RETURN_ARG i1 # ================================================== abi c function test_definedness_switch2( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR i2 int MUTABLE VAR t3 bool TEMP VAR t4 int TEMP VAR t7 int TEMP ebb0: LT t3, arg0, 4 CONDJUMP ebb2, t3~, z, _ ebb1: MOVE t4, arg0 COMPAREJUMP ebb5, t4~, 2, z, unlikely COMPAREJUMP ebb6, t4~, 1, z, unlikely JUMP ebb4 ebb2: MOVE i2, arg0 ebb3: RETURN_ARG i2 ebb4: MOVE i2, 444 JUMP ebb7 ebb5: MOVE i2, 333 JUMP ebb7 ebb6: NOP CONDJUMP ebb9, arg1, nz, _ JUMP ebb8 ebb7: JUMP ebb3 ebb8: MOVE i2, 111 JUMP ebb10 ebb9: NOP CONDJUMP ebb12, arg1, gez, _ JUMP ebb11 ebb10: JUMP ebb7 ebb11: NEG i2, arg1 NOP DISCARD t7~ JUMP ebb13 ebb12: MOVE i2, 222 ebb13: JUMP ebb10 # ================================================== abi c function test_definedness_switch3( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR i2 int MUTABLE VAR t3 bool TEMP VAR t4 int TEMP VAR t7 int TEMP ebb0: LT t3, arg0, 4 CONDJUMP ebb2, t3~, z, _ ebb1: MOVE t4, arg0 COMPAREJUMP ebb5, t4~, 2, z, unlikely COMPAREJUMP ebb6, t4~, 1, z, unlikely JUMP ebb4 ebb2: MOVE i2, arg0 ebb3: RETURN_ARG i2 ebb4: MOVE i2, 789 JUMP ebb7 ebb5: RETURN_ARG -2 ebb6: NOP CONDJUMP ebb9, arg1, nz, _ JUMP ebb8 ebb7: JUMP ebb3 ebb8: MOVE i2, 123 JUMP ebb10 ebb9: NOP CONDJUMP ebb12, arg1, gez, _ JUMP ebb11 ebb10: JUMP ebb7 ebb11: NEG i2, arg1 NOP DISCARD t7~ JUMP ebb13 ebb12: RETURN_ARG -1 ebb13: JUMP ebb10 # ================================================== abi c function test_definedness_switch4( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR i2 int MUTABLE VAR t3 bool TEMP VAR t4 int TEMP VAR t5 int TEMP ebb0: LT t3, arg0, 4 CONDJUMP ebb2, t3~, z, _ ebb1: MOVE t4, arg0 COMPAREJUMP ebb5, t4~, 2, z, unlikely COMPAREJUMP ebb6, t4~, 1, z, unlikely JUMP ebb4 ebb2: MOVE i2, arg0 ebb3: RETURN_ARG i2 ebb4: MOVE i2, 789 JUMP ebb7 ebb5: RETURN_ARG -2 ebb6: MOVE t5, arg1 COMPAREJUMP ebb9, t5~, 10, z, unlikely JUMP ebb8 ebb7: JUMP ebb3 ebb8: RETURN_ARG -1 ebb9: MOVE i2, 123 JUMP ebb10 ebb10: JUMP ebb7 # ================================================== abi c function test_definedness_switch5( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR i2 int MUTABLE VAR t3 bool TEMP VAR t4 int TEMP VAR t5 int TEMP ebb0: LT t3, arg0, 4 CONDJUMP ebb2, t3~, z, _ ebb1: MOVE t4, arg0 COMPAREJUMP ebb5, t4~, 2, z, unlikely COMPAREJUMP ebb6, t4~, 1, z, unlikely JUMP ebb4 ebb2: RETURN_ARG -2 ebb3: RETURN_ARG i2 ebb4: MOVE i2, 789 JUMP ebb7 ebb5: RETURN_ARG -2 ebb6: MOVE t5, arg1 COMPAREJUMP ebb9, t5~, 10, z, unlikely JUMP ebb8 ebb7: JUMP ebb3 ebb8: RETURN_ARG -1 ebb9: MOVE i2, 123 JUMP ebb10 ebb10: JUMP ebb7 # ================================================== abi c function test_definedness_switch6( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR t2 int TEMP VAR t3 int TEMP ebb0: MOVE t2, arg0 COMPAREJUMP ebb2, t2~, 123, z, unlikely JUMP ebb1 ebb1: JUMP ebb3 ebb2: MOVE t3, arg1 COMPAREJUMP ebb4, t3~, 456, z, unlikely JUMP ebb5 ebb3: RETURN_ARG 3 ebb4: JUMP ebb5 ebb5: JUMP ebb3 # ================================================== abi c function take_nonopt_param( dptr ) -> void VAR arg0 dptr PARAM UNUSED ebb0: # ================================================== abi c function test_definedness_nullability( dptr dptr int ) -> void VAR arg0 dptr PARAM VAR arg1 dptr PARAM VAR arg2 int PARAM VAR p3 dptr MUTABLE VAR t5 int TEMP VAR t6 bool TEMP VAR t8 int TEMP VAR t9 bool TEMP VAR t10 bool TEMP VAR t11 int TEMP VAR t12 bool TEMP VAR t15 int TEMP VAR t16 bool TEMP VAR t17 int TEMP VAR t18 bool TEMP VAR t20 u8 TEMP VAR t21 bool TEMP ebb0: NOP CONDJUMP ebb2, arg0, z, _ ebb1: LOADELEM t5, {int,int}, arg0, 0, 0 EQ t6, t5~, 456 CONDTRAP t6~, z ebb2: NOP CONDJUMP ebb4, arg0, nz, _ ebb3: JUMP ebb5 ebb4: LOADELEM t8, {int,int}, arg0, 0, 0 EQ t9, t8~, 456 CONDTRAP t9~, z EQ t10, arg2, 123 CONDJUMP ebb7, t10~, z, _ JUMP ebb6 ebb5: JUMP ebb8 ebb6: JUMP ebb14 ebb7: JUMP ebb5 ebb8: NOP CONDJUMP ebb9, arg0, nz, likely JUMP ebb10 ebb9: LOADELEM t11, {int,int}, arg0, 0, 0 EQ t12, t11~, 456 CONDTRAP t12~, z JUMP ebb10 ebb10: NOP CONDTRAP arg0, z LOADELEM t15, {int,int}, arg0, 0, 0 EQ t16, t15~, 456 CONDTRAP t16~, z JUMP ebb14 ebb11: LOADELEM t20, [3]u8, arg1, 2, 0 EQ t21, t20~, 789 CONDTRAP t21~, z ebb12: RETURN_VOID ebb13: ebb14: LOADELEM t17, {int,int}, arg0, 0, 0 EQ t18, t17~, 456 CONDTRAP t18~, z MOVE p3, arg0 CALL_START 1 CALL_ARG arg0 CALL_FUNCDEF normal, take_nonopt_param CALL_DISCARD_RETURN NOP CONDJUMP ebb12, arg1, z, _ JUMP ebb11 # ================================================== abi c function test_definedness_nullability_index( dptr ) -> u8 VAR arg0 dptr PARAM VAR arr1 [3]u8 ADDR VAR tp4 dptr TEMP VAR len6 usize MUTABLE VAR len7 usize MUTABLE VAR t8 u8 TEMP ebb0: LOADGLOBAL arr1, D137 NOP CONDJUMP ebb2, arg0, z, _ ebb1: ADDRLOCAL tp4, arr1 DEREF len7, arg0 NOP DISCARD len6~ LOADELEM t8, [3]u8, tp4~, len7~, 0 RETURN_ARG t8~ ebb2: RETURN_ARG 0 # ================================================== abi c function definedness_testfunc( int ) -> int VAR arg0 int PARAM VAR t1 int TEMP ebb0: MUL t1, arg0, 111 RETURN_ARG t1~ # ================================================== abi c function take_nonopt_funcref( fptr ) -> void VAR arg0 fptr PARAM VAR t1 int TEMP VAR t2 bool TEMP ebb0: CALL_START 1 CALL_ARG -1 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t1 EQ t2, t1~, -11 CONDTRAP t2~, z # ================================================== abi c function test_definedness_nullability_funcref( fptr fptr int ) -> int VAR arg0 fptr PARAM VAR arg1 fptr PARAM VAR arg2 int PARAM VAR i3 int MUTABLE VAR fptr4 fptr MUTABLE VAR t6 int TEMP VAR t7 bool TEMP VAR t9 int TEMP VAR t10 bool TEMP VAR t11 bool TEMP VAR t12 int TEMP VAR t13 bool TEMP VAR t16 int TEMP VAR t17 bool TEMP VAR t18 int TEMP VAR t19 bool TEMP VAR t20 int TEMP ebb0: MOVE i3, 0 NOP CONDJUMP ebb2, arg0, z, _ ebb1: CALL_START 1 CALL_ARG 1 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t6 EQ t7, t6~, 11 CONDTRAP t7~, z ADD i3, i3~, 1 ebb2: NOP CONDJUMP ebb4, arg0, nz, _ ebb3: JUMP ebb5 ebb4: CALL_START 1 CALL_ARG 2 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t9 EQ t10, t9~, 22 CONDTRAP t10~, z ADD i3, i3~, 2 EQ t11, arg2, 123 CONDJUMP ebb7, t11~, z, _ JUMP ebb6 ebb5: JUMP ebb8 ebb6: ADD i3, i3~, 4 JUMP ebb12 ebb7: JUMP ebb5 ebb8: NOP CONDJUMP ebb9, arg0, nz, likely JUMP ebb10 ebb9: ADD i3, i3~, 8 CALL_START 1 CALL_ARG 3 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t12 EQ t13, t12~, 33 CONDTRAP t13~, z JUMP ebb10 ebb10: NOP CONDTRAP arg0, z CALL_START 1 CALL_ARG 4 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t16 EQ t17, t16~, 44 CONDTRAP t17~, z ADD i3, i3~, 16 JUMP ebb12 ebb11: ebb12: CALL_START 1 CALL_ARG 5 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t18 EQ t19, t18~, 55 CONDTRAP t19~, z MOVE fptr4, arg0 CALL_START 1 CALL_ARG arg0 CALL_FUNCDEF normal, take_nonopt_funcref CALL_DISCARD_RETURN MOVE fptr4, arg1 ADD i3, i3~, 32 CALL_START 1 CALL_ARG 99 CALL_FUNCVAR normal, int, arg0 CALL_GET_RETURN t20 RETURN_ARG t20~ # ================================================== abi c function expr_return( int ) -> int VAR arg0 int PARAM VAR t1 int TEMP VAR t2 int TEMP ebb0: MUL t1, 2, arg0 ADD t2, t1~, 3 RETURN_ARG t2~ # ================================================== abi c function expr_multiarg( bool int dptr int ) -> void VAR arg0 bool PARAM UNUSED VAR arg1 int PARAM UNUSED VAR arg2 dptr PARAM UNUSED VAR arg3 int PARAM UNUSED ebb0: # ================================================== abi c function expr_misc() -> int VAR i0 int VAR i1 int VAR i2 int VAR i3 int VAR i4 int VAR i5 int VAR i6 int VAR i7 int VAR i8 int VAR i9 int VAR t16 bool TEMP VAR t17 int TEMP VAR t18 int TEMP VAR t19 int TEMP VAR t21 int TEMP VAR t22 int TEMP VAR t23 int TEMP VAR t24 int TEMP VAR t25 int TEMP VAR t26 int TEMP VAR t27 int TEMP VAR t28 int TEMP VAR t30 int TEMP VAR t31 int TEMP VAR t32 int TEMP VAR t33 int TEMP VAR t35 int TEMP VAR t36 int TEMP VAR t37 int TEMP VAR t38 int TEMP VAR t40 int TEMP VAR t41 int TEMP VAR t42 int TEMP VAR t43 int TEMP VAR t44 int TEMP VAR t45 int TEMP VAR t46 int TEMP VAR t47 int TEMP VAR t48 int TEMP VAR t49 int TEMP VAR t50 int TEMP ebb0: CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i0 CALL_START 1 CALL_ARG 3 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i1 CALL_START 1 CALL_ARG 4 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i2 CALL_START 1 CALL_ARG 5 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i3 CALL_START 1 CALL_ARG 6 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i4 CALL_START 1 CALL_ARG 6 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i5 NEQ t16, i0, i1 CONDJUMP ebb2, t16~, z, _ ebb1: MUL t17, i0, i2 MUL t18, t17~, i3 ADD t19, i1, i4 DIV i6, t18~, t19~ ADD t21, i0, i1 ADD t22, i2, i3 MUL t23, t21~, t22~ ADD t24, i4, i5 MUL t25, t23~, t24~ SUB t26, i0, i1 MUL t27, t25~, t26~ SUB t28, i1, i2 MUL i7, t27~, t28~ ADD t30, i4, i5 ADD t31, i3, t30~ ADD t32, i2, t31~ ADD t33, i1, t32~ ADD i8, i0, t33~ ADD t35, i0, i1 ADD t36, t35~, i2 ADD t37, t36~, i3 ADD t38, t37~, i4 ADD i9, t38~, i5 MUL t40, i6, 12 MUL t41, 34, i7 ADD t42, t40~, t41~ MUL t43, i2, 56 ADD t44, t43~, i8 ADD t45, t42~, t44~ MUL t46, i3, i8 ADD t47, i6, t46~ ADD t48, t47~, i9 SUB t49, t48~, 123 ADD t50, t45~, t49~ RETURN_ARG t50~ ebb2: RETURN_ARG 123 # ================================================== abi c function expr_pointers() -> void VAR i0 int ADDR VAR p1 dptr VAR i2 int ADDR VAR u3 u8 VAR tp8 dptr TEMP VAR t9 bool TEMP VAR tp11 dptr TEMP VAR t12 bool TEMP VAR t13 int TEMP VAR t14 bool TEMP VAR t15 int TEMP VAR t16 bool TEMP VAR t17 int TEMP VAR t18 bool TEMP VAR t19 int TEMP VAR t20 bool TEMP ebb0: MOVE i0, 123 ADDRLOCAL p1, i0 NOP DEREF i2, p1 ADDRLOCAL tp8, i0 NOP EQ t9, p1, tp8~ CONDTRAP t9~, z ADDRLOCAL tp11, i2 NOP NEQ t12, p1, tp11~ CONDTRAP t12~, z DEREF t13, p1 EQ t14, 123, t13~ CONDTRAP t14~, z DEREF t15, p1 EQ t16, t15~, 123 CONDTRAP t16~, z MOVE u3, 123 DEREF t17, p1 EQ t18, t17~, 123 CONDTRAP t18~, z DEREF t19, p1 EQ t20, t19~, 123 CONDTRAP t20~, z # ================================================== abi c function expr_pointer_assign() -> void VAR i0 int ADDR MUTABLE VAR p1 dptr VAR obj2 {dptr} ADDR MUTABLE VAR tp6 dptr TEMP VAR tp8 dptr TEMP VAR tp9 dptr TEMP VAR tp11 dptr TEMP ebb0: MOVE i0, 111 ADDRLOCAL p1, i0 NOP ADDRLOCAL tp6, i0 NOP MOVE obj2, 123 MOVE tp8, p1 MOVETOPTR tp8~, 222 DISCARD tp8~ ADDRLOCAL tp9, obj2 LOADELEM tp11, {dptr}, tp9~, 0, 0 NOP MOVETOPTR tp11~, 333 DISCARD tp11~ # ================================================== abi c function expr_booleans() -> void VAR b0 bool VAR b1 bool VAR b2 bool ebb0: MOVE b0, 1 MOVE b1, 0 MOVE b2, 0 NOP NOP # ================================================== abi c function expr_comparisons_int() -> void VAR i0 int VAR i1 int MUTABLE VAR i2 int VAR u3 u64 MUTABLE VAR u4 u64 MUTABLE VAR t5 bool TEMP VAR t6 bool TEMP VAR t7 bool TEMP VAR t8 bool TEMP VAR t9 bool TEMP VAR t10 bool TEMP VAR t11 bool TEMP VAR t12 bool TEMP VAR t13 bool TEMP ebb0: MOVE i0, 111 MOVE i1, 222 MOVE i2, -333 NOP NOP NOP NOP EQ t5, i1, 222 CONDTRAP t5~, z NEQ t6, i1, 111 CONDTRAP t6~, z NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP GE t7, i1, 111 CONDTRAP t7~, z LE t8, 111, i1 CONDTRAP t8~, z NEQ t9, i1, 111 CONDTRAP t9~, z NEQ t10, 111, i1 CONDTRAP t10~, z MOVE u3, 18446744073709551614 MOVE u4, 18446744073709551615 LT t11, u3, u4 CONDTRAP t11~, z LE t12, u3, -2 CONDTRAP t12~, z LT t13, u3, -1 CONDTRAP t13~, z # ================================================== abi c function expr_comparisons_bool() -> void VAR b0 bool VAR b1 bool VAR b2 bool MUTABLE VAR t3 bool TEMP ebb0: MOVE b0, 0 MOVE b1, 1 MOVE b2, 0 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NEQ t3, 1, b2 NOP CONDTRAP t3~, z # ================================================== abi c function typescope_param( int ) -> int VAR arg0 int PARAM VAR i1 int MUTABLE VAR i2 int VAR t4 bool TEMP ebb0: MOVE i1, 1 MOVE i1, 2 MOVE i2, 0 NOP CONDJUMP ebb2, arg0, nz, _ ebb1: RETURN_ARG i1 ebb2: EQ t4, arg0, 1 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: RETURN_ARG 1 ebb4: RETURN_ARG 0 ebb5: JUMP ebb3 # ================================================== abi c function expr_typescopes() -> void VAR t0 int TEMP VAR t1 bool TEMP VAR t2 int TEMP VAR t4 int TEMP VAR t5 bool TEMP ebb0: CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, typescope_param CALL_GET_RETURN t0 EQ t1, t0~, 2 CONDTRAP t1~, z CALL_START 1 CALL_ARG 1 CALL_FUNCDEF normal, typescope_param CALL_GET_RETURN t2 NOP CONDTRAP t2~, nz CALL_START 1 CALL_ARG 2 CALL_FUNCDEF normal, typescope_param CALL_GET_RETURN t4 EQ t5, t4~, 1 CONDTRAP t5~, z # ================================================== abi c function expr_calls() -> void VAR i0 int VAR len1 usize VAR i2 int VAR t4 usize TEMP VAR t5 usize TEMP VAR t7 int TEMP VAR t8 int TEMP VAR t10 bool TEMP VAR t12 bool TEMP ebb0: CALL_START 4 CALL_ARG 1 CALL_ARG 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, expr_multiarg CALL_DISCARD_RETURN CALL_START 1 CALL_ARG 123 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i0 CALL_START 4 CALL_ARG 1 CALL_ARG 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, expr_multiarg CALL_DISCARD_RETURN CALL_START 4 CALL_ARG 1 CALL_ARG 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, expr_multiarg CALL_DISCARD_RETURN CALL_START 4 CALL_ARG 1 CALL_ARG 2 CALL_ARG 0 CALL_ARG 2 CALL_FUNCDEF normal, expr_multiarg CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, expr_get_some_number CALL_GET_RETURN t4 CALL_START 0 CALL_FUNCDEF normal, expr_get_some_number CALL_GET_RETURN t5 ADD len1, t4~, t5~ CALL_START 1 CALL_ARG 11 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN t7 CALL_START 1 CALL_ARG 22 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN t8 ADD i2, t7~, t8~ EQ t10, i0, 249 CONDTRAP t10~, z NOP CONDTRAP len1, nz EQ t12, i2, 72 CONDTRAP t12~, z # ================================================== abi c function expr_get_some_number() -> usize ebb0: RETURN_ARG 0 # ================================================== abi c function expr_struct_initf() -> {int,bool} VAR obj0 {int,bool} ADDR VAR obj1 {int,bool} VAR tp4 dptr TEMP VAR t5 int TEMP VAR t6 bool TEMP VAR tp7 dptr TEMP VAR t8 bool TEMP VAR t9 bool TEMP ebb0: LOADGLOBAL obj0, D135 LOADGLOBAL obj1, D136 ADDRLOCAL tp4, obj0 LOADELEM t5, {int,bool}, tp4~, 0, 0 EQ t6, t5~, 123 CONDTRAP t6~, z ADDRLOCAL tp7, obj0 LOADELEM t8, {int,bool}, tp7~, 0, 1 EQ t9, t8~, 1 CONDTRAP t9~, z RETURN_ARG obj0 # ================================================== abi c function expr_init_copy() -> void VAR arr0 [1]u8 ADDR MUTABLE VAR arr1 [2]u8 ADDR MUTABLE VAR arr2 [3]u8 ADDR MUTABLE VAR arr3 [4]u8 ADDR MUTABLE VAR arr4 [5]u8 ADDR MUTABLE VAR arr5 [6]u8 ADDR MUTABLE VAR arr6 [7]u8 ADDR MUTABLE VAR arr7 [8]u8 ADDR MUTABLE VAR arr8 [9]u8 ADDR MUTABLE VAR arr9 [10]u8 ADDR MUTABLE VAR arr10 [11]u8 ADDR MUTABLE VAR arr11 [12]u8 ADDR MUTABLE VAR arr12 [13]u8 ADDR MUTABLE VAR arr13 [14]u8 ADDR MUTABLE VAR arr14 [15]u8 ADDR MUTABLE VAR arr15 [16]u8 ADDR MUTABLE VAR arr16 [17]u8 ADDR MUTABLE VAR arr17 [18]u8 ADDR MUTABLE VAR arr18 [19]u8 ADDR MUTABLE VAR arr19 [20]u8 ADDR MUTABLE VAR u20 u8 MUTABLE VAR tp41 dptr TEMP VAR t42 u8 TEMP VAR t43 bool TEMP VAR tp44 dptr TEMP VAR t45 u8 TEMP VAR t46 bool TEMP VAR tp47 dptr TEMP VAR t48 u8 TEMP VAR t49 bool TEMP VAR tp50 dptr TEMP VAR t51 u8 TEMP VAR t52 bool TEMP VAR tp53 dptr TEMP VAR t54 u8 TEMP VAR t55 bool TEMP VAR tp56 dptr TEMP VAR t57 u8 TEMP VAR t58 bool TEMP VAR tp59 dptr TEMP VAR t60 u8 TEMP VAR t61 bool TEMP VAR tp62 dptr TEMP VAR t63 u8 TEMP VAR t64 bool TEMP VAR tp65 dptr TEMP VAR t66 u8 TEMP VAR t67 bool TEMP VAR tp68 dptr TEMP VAR t69 u8 TEMP VAR t70 bool TEMP VAR tp71 dptr TEMP VAR t72 u8 TEMP VAR t73 bool TEMP VAR tp74 dptr TEMP VAR t75 u8 TEMP VAR t76 bool TEMP VAR tp77 dptr TEMP VAR t78 u8 TEMP VAR t79 bool TEMP VAR tp80 dptr TEMP VAR t81 u8 TEMP VAR t82 bool TEMP VAR tp83 dptr TEMP VAR t84 u8 TEMP VAR t85 bool TEMP VAR tp86 dptr TEMP VAR t87 u8 TEMP VAR t88 bool TEMP VAR tp89 dptr TEMP VAR t90 u8 TEMP VAR t91 bool TEMP VAR tp92 dptr TEMP VAR t93 u8 TEMP VAR t94 bool TEMP VAR tp95 dptr TEMP VAR t96 u8 TEMP VAR t97 bool TEMP VAR tp98 dptr TEMP VAR t99 u8 TEMP VAR t100 bool TEMP VAR tp101 dptr TEMP VAR t102 u8 TEMP VAR t103 bool TEMP VAR tp104 dptr TEMP VAR t105 u8 TEMP VAR t106 bool TEMP VAR tp107 dptr TEMP VAR t108 u8 TEMP VAR t109 bool TEMP VAR tp110 dptr TEMP VAR t111 u8 TEMP VAR t112 bool TEMP VAR tp113 dptr TEMP VAR t114 u8 TEMP VAR t115 bool TEMP VAR tp116 dptr TEMP VAR t117 u8 TEMP VAR t118 bool TEMP VAR tp119 dptr TEMP VAR t120 u8 TEMP VAR t121 bool TEMP VAR tp122 dptr TEMP VAR t123 u8 TEMP VAR t124 bool TEMP VAR tp125 dptr TEMP VAR t126 u8 TEMP VAR t127 bool TEMP VAR t128 bool TEMP VAR tp129 dptr TEMP VAR len131 usize MUTABLE VAR t132 u8 TEMP VAR t133 bool TEMP VAR t134 bool TEMP VAR tp135 dptr TEMP VAR len137 usize MUTABLE VAR t138 u8 TEMP VAR t139 bool TEMP VAR t140 bool TEMP VAR tp141 dptr TEMP VAR len143 usize MUTABLE VAR t144 u8 TEMP VAR t145 bool TEMP VAR t146 bool TEMP VAR tp147 dptr TEMP VAR len149 usize MUTABLE VAR t150 u8 TEMP VAR t151 bool TEMP VAR t152 bool TEMP VAR tp153 dptr TEMP VAR len155 usize MUTABLE VAR t156 u8 TEMP VAR t157 bool TEMP VAR t158 bool TEMP VAR tp159 dptr TEMP VAR len161 usize MUTABLE VAR t162 u8 TEMP VAR t163 bool TEMP VAR t164 bool TEMP VAR tp165 dptr TEMP VAR len167 usize MUTABLE VAR t168 u8 TEMP VAR t169 bool TEMP VAR t170 bool TEMP VAR tp171 dptr TEMP VAR len173 usize MUTABLE VAR t174 u8 TEMP VAR t175 bool TEMP VAR t176 bool TEMP VAR tp177 dptr TEMP VAR len179 usize MUTABLE VAR t180 u8 TEMP VAR t181 bool TEMP VAR t182 bool TEMP VAR tp183 dptr TEMP VAR len185 usize MUTABLE VAR t186 u8 TEMP VAR t187 bool TEMP VAR t188 bool TEMP VAR tp189 dptr TEMP VAR len191 usize MUTABLE VAR t192 u8 TEMP VAR t193 bool TEMP VAR t194 bool TEMP ebb0: LOADGLOBAL arr0, D115 LOADGLOBAL arr1, D116 LOADGLOBAL arr2, D117 LOADGLOBAL arr3, D118 LOADGLOBAL arr4, D119 LOADGLOBAL arr5, D120 LOADGLOBAL arr6, D121 LOADGLOBAL arr7, D122 LOADGLOBAL arr8, D123 LOADGLOBAL arr9, D124 LOADGLOBAL arr10, D125 LOADGLOBAL arr11, D126 LOADGLOBAL arr12, D127 LOADGLOBAL arr13, D128 LOADGLOBAL arr14, D129 LOADGLOBAL arr15, D130 LOADGLOBAL arr16, D131 LOADGLOBAL arr17, D132 LOADGLOBAL arr18, D133 LOADGLOBAL arr19, D134 ADDRLOCAL tp41, arr0 LOADELEM t42, [1]u8, tp41~, 0, 0 EQ t43, t42~, 10 CONDTRAP t43~, z ADDRLOCAL tp44, arr1 LOADELEM t45, [2]u8, tp44~, 0, 0 EQ t46, t45~, 20 CONDTRAP t46~, z ADDRLOCAL tp47, arr1 LOADELEM t48, [2]u8, tp47~, 1, 0 EQ t49, t48~, 21 CONDTRAP t49~, z ADDRLOCAL tp50, arr2 LOADELEM t51, [3]u8, tp50~, 0, 0 EQ t52, t51~, 30 CONDTRAP t52~, z ADDRLOCAL tp53, arr2 LOADELEM t54, [3]u8, tp53~, 1, 0 EQ t55, t54~, 31 CONDTRAP t55~, z ADDRLOCAL tp56, arr2 LOADELEM t57, [3]u8, tp56~, 2, 0 EQ t58, t57~, 32 CONDTRAP t58~, z ADDRLOCAL tp59, arr3 LOADELEM t60, [4]u8, tp59~, 0, 0 EQ t61, t60~, 40 CONDTRAP t61~, z ADDRLOCAL tp62, arr3 LOADELEM t63, [4]u8, tp62~, 1, 0 EQ t64, t63~, 41 CONDTRAP t64~, z ADDRLOCAL tp65, arr3 LOADELEM t66, [4]u8, tp65~, 2, 0 EQ t67, t66~, 42 CONDTRAP t67~, z ADDRLOCAL tp68, arr3 LOADELEM t69, [4]u8, tp68~, 3, 0 EQ t70, t69~, 43 CONDTRAP t70~, z ADDRLOCAL tp71, arr4 LOADELEM t72, [5]u8, tp71~, 0, 0 EQ t73, t72~, 50 CONDTRAP t73~, z ADDRLOCAL tp74, arr4 LOADELEM t75, [5]u8, tp74~, 4, 0 EQ t76, t75~, 54 CONDTRAP t76~, z ADDRLOCAL tp77, arr5 LOADELEM t78, [6]u8, tp77~, 4, 0 EQ t79, t78~, 64 CONDTRAP t79~, z ADDRLOCAL tp80, arr5 LOADELEM t81, [6]u8, tp80~, 5, 0 EQ t82, t81~, 65 CONDTRAP t82~, z ADDRLOCAL tp83, arr6 LOADELEM t84, [7]u8, tp83~, 0, 0 EQ t85, t84~, 70 CONDTRAP t85~, z ADDRLOCAL tp86, arr6 LOADELEM t87, [7]u8, tp86~, 4, 0 EQ t88, t87~, 74 CONDTRAP t88~, z ADDRLOCAL tp89, arr6 LOADELEM t90, [7]u8, tp89~, 5, 0 EQ t91, t90~, 75 CONDTRAP t91~, z ADDRLOCAL tp92, arr6 LOADELEM t93, [7]u8, tp92~, 6, 0 EQ t94, t93~, 76 CONDTRAP t94~, z ADDRLOCAL tp95, arr7 LOADELEM t96, [8]u8, tp95~, 0, 0 EQ t97, t96~, 80 CONDTRAP t97~, z ADDRLOCAL tp98, arr7 LOADELEM t99, [8]u8, tp98~, 4, 0 EQ t100, t99~, 84 CONDTRAP t100~, z ADDRLOCAL tp101, arr7 LOADELEM t102, [8]u8, tp101~, 5, 0 EQ t103, t102~, 85 CONDTRAP t103~, z ADDRLOCAL tp104, arr7 LOADELEM t105, [8]u8, tp104~, 6, 0 EQ t106, t105~, 86 CONDTRAP t106~, z ADDRLOCAL tp107, arr7 LOADELEM t108, [8]u8, tp107~, 7, 0 EQ t109, t108~, 87 CONDTRAP t109~, z ADDRLOCAL tp110, arr8 LOADELEM t111, [9]u8, tp110~, 0, 0 EQ t112, t111~, 90 CONDTRAP t112~, z ADDRLOCAL tp113, arr8 LOADELEM t114, [9]u8, tp113~, 4, 0 EQ t115, t114~, 94 CONDTRAP t115~, z ADDRLOCAL tp116, arr8 LOADELEM t117, [9]u8, tp116~, 5, 0 EQ t118, t117~, 95 CONDTRAP t118~, z ADDRLOCAL tp119, arr8 LOADELEM t120, [9]u8, tp119~, 6, 0 EQ t121, t120~, 96 CONDTRAP t121~, z ADDRLOCAL tp122, arr8 LOADELEM t123, [9]u8, tp122~, 7, 0 EQ t124, t123~, 97 CONDTRAP t124~, z ADDRLOCAL tp125, arr8 LOADELEM t126, [9]u8, tp125~, 8, 0 EQ t127, t126~, 98 CONDTRAP t127~, z MOVE u20, 0 JUMP ebb1 ebb1: LT t194, u20, 20 CONDJUMP ebb2, t194~, nz, likely JUMP ebb3 ebb2: LT t128, u20, 10 CONDJUMP ebb5, t128~, z, _ JUMP ebb4 ebb3: RETURN_VOID ebb4: ADDRLOCAL tp129, arr9 MOVE len131, u20 NOP LOADELEM t132, [10]u8, tp129~, len131~, 0 EQ t133, t132~, u20 CONDTRAP t133~, z ebb5: LT t134, u20, 11 CONDJUMP ebb7, t134~, z, _ ebb6: ADDRLOCAL tp135, arr10 MOVE len137, u20 NOP LOADELEM t138, [11]u8, tp135~, len137~, 0 EQ t139, t138~, u20 CONDTRAP t139~, z ebb7: LT t140, u20, 12 CONDJUMP ebb9, t140~, z, _ ebb8: ADDRLOCAL tp141, arr11 MOVE len143, u20 NOP LOADELEM t144, [12]u8, tp141~, len143~, 0 EQ t145, t144~, u20 CONDTRAP t145~, z ebb9: LT t146, u20, 13 CONDJUMP ebb11, t146~, z, _ ebb10: ADDRLOCAL tp147, arr12 MOVE len149, u20 NOP LOADELEM t150, [13]u8, tp147~, len149~, 0 EQ t151, t150~, u20 CONDTRAP t151~, z ebb11: LT t152, u20, 14 CONDJUMP ebb13, t152~, z, _ ebb12: ADDRLOCAL tp153, arr13 MOVE len155, u20 NOP LOADELEM t156, [14]u8, tp153~, len155~, 0 EQ t157, t156~, u20 CONDTRAP t157~, z ebb13: LT t158, u20, 15 CONDJUMP ebb15, t158~, z, _ ebb14: ADDRLOCAL tp159, arr14 MOVE len161, u20 NOP LOADELEM t162, [15]u8, tp159~, len161~, 0 EQ t163, t162~, u20 CONDTRAP t163~, z ebb15: LT t164, u20, 16 CONDJUMP ebb17, t164~, z, _ ebb16: ADDRLOCAL tp165, arr15 MOVE len167, u20 NOP LOADELEM t168, [16]u8, tp165~, len167~, 0 EQ t169, t168~, u20 CONDTRAP t169~, z ebb17: LT t170, u20, 17 CONDJUMP ebb19, t170~, z, _ ebb18: ADDRLOCAL tp171, arr16 MOVE len173, u20 NOP LOADELEM t174, [17]u8, tp171~, len173~, 0 EQ t175, t174~, u20 CONDTRAP t175~, z ebb19: LT t176, u20, 18 CONDJUMP ebb21, t176~, z, _ ebb20: ADDRLOCAL tp177, arr17 MOVE len179, u20 NOP LOADELEM t180, [18]u8, tp177~, len179~, 0 EQ t181, t180~, u20 CONDTRAP t181~, z ebb21: LT t182, u20, 19 CONDJUMP ebb23, t182~, z, _ ebb22: ADDRLOCAL tp183, arr18 MOVE len185, u20 NOP LOADELEM t186, [19]u8, tp183~, len185~, 0 EQ t187, t186~, u20 CONDTRAP t187~, z ebb23: LT t188, u20, 20 CONDJUMP ebb25, t188~, z, _ ebb24: ADDRLOCAL tp189, arr19 MOVE len191, u20 NOP LOADELEM t192, [20]u8, tp189~, len191~, 0 EQ t193, t192~, u20 CONDTRAP t193~, z ebb25: ADD u20, u20~, 1 JUMP ebb1 # ================================================== abi c function never_get_struct() -> {dptr,int,dptr} ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function expr_fields() -> void VAR obj0 {dptr,int,dptr} ADDR MUTABLE VAR tp2 dptr TEMP VAR tp3 dptr TEMP VAR tp4 dptr TEMP VAR tp5 dptr TEMP VAR t6 int TEMP VAR tp7 dptr TEMP VAR tp8 dptr TEMP VAR tp9 dptr TEMP VAR tp10 dptr TEMP VAR t11 int TEMP VAR t12 int TEMP VAR tp13 dptr TEMP VAR tp14 dptr TEMP VAR tp15 dptr TEMP VAR tp17 dptr TEMP VAR tp18 dptr TEMP VAR tp19 dptr TEMP VAR tp21 dptr TEMP VAR tp22 dptr TEMP VAR tp23 dptr TEMP VAR tp24 dptr TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, never_get_struct CALL_GET_RETURN obj0 # v.a = 234 ADDRLOCAL tp2, obj0 ADDRELEM tp3, {dptr,int,dptr}, tp2~, 0, 1 MOVETOPTR tp3~, 234 DISCARD tp3~ # v.a += 1 ADDRLOCAL tp4, obj0 ADDRELEM tp5, {dptr,int,dptr}, tp4~, 0, 1 DEREF t6, tp5 ADD t6, t6~, 1 MOVETOPTR tp5~, t6~ # t5(v.a) = t6(+1) # v.a = deref v.b + 22 ADDRLOCAL tp7, obj0 ADDRELEM tp8, {dptr,int,dptr}, tp7~, 0, 1 ADDRLOCAL tp9, obj0 LOADELEM tp10, {dptr,int,dptr}, tp9~, 0, 2 DEREF t11, tp10~ ADD t12, t11~, 22 MOVETOPTR tp8~, t12~ DISCARD t12~ # v.b = refto v.a ADDRLOCAL tp13, obj0 ADDRELEM tp14, {dptr,int,dptr}, tp13~, 0, 2 ADDRLOCAL tp15, obj0 ADDRELEM tp17, {dptr,int,dptr}, tp15~, 0, 1 NOP MOVETOPTR tp14~, tp17~ # tp11(v.b) = tp8(refto v.a) DISCARD tp17~ # v.next = refto v ADDRLOCAL tp18, obj0 ADDRELEM tp19, {dptr,int,dptr}, tp18~, 0, 0 ADDRLOCAL tp21, obj0 NOP MOVETOPTR tp19~, tp21~ # tp19(v.next) = tp21(refto v) DISCARD tp21~ # v.next.a = 345 ADDRLOCAL tp22, obj0 LOADELEM tp23, {dptr,int,dptr}, tp22~, 0, 0 ADDRELEM tp24, {dptr,int,dptr}, tp23~, 0, 1 MOVETOPTR tp24~, 345 DISCARD tp24~ # ================================================== abi c function expr_structs() -> void VAR obj0 {bool,{},bool,{int,int},bool} ebb0: LOADGLOBAL obj0, D114 # ================================================== abi c function expr_arrays() -> void VAR obj0 {[2]int,[6]int,[6]int,[2]{[2]bool}} ADDR MUTABLE VAR i1 int MUTABLE VAR len2 usize MUTABLE VAR len3 usize MUTABLE VAR tp5 dptr TEMP VAR tp6 dptr TEMP VAR t8 bool TEMP VAR tp11 dptr TEMP VAR tp12 dptr TEMP VAR len14 usize MUTABLE VAR t15 int TEMP VAR tp16 dptr TEMP VAR tp17 dptr TEMP VAR len19 usize MUTABLE VAR tp20 dptr TEMP VAR tp21 dptr TEMP VAR tp22 dptr TEMP VAR t23 int TEMP VAR t24 bool TEMP VAR tp25 dptr TEMP VAR tp26 dptr TEMP VAR t27 usize TEMP VAR len29 usize MUTABLE VAR len30 usize MUTABLE VAR t31 int TEMP VAR t32 bool TEMP VAR tp33 dptr TEMP VAR tp34 dptr TEMP VAR t35 int TEMP VAR tp36 dptr TEMP VAR tp37 dptr TEMP VAR t38 int TEMP VAR tp39 dptr TEMP VAR tp40 dptr TEMP VAR t41 int TEMP VAR t42 bool TEMP VAR tp43 dptr TEMP VAR tp44 dptr TEMP VAR len45 usize MUTABLE VAR len46 usize MUTABLE VAR t47 int TEMP VAR t48 bool TEMP VAR tp49 dptr TEMP VAR tp50 dptr TEMP VAR len51 usize MUTABLE VAR len52 usize MUTABLE VAR t53 int TEMP VAR t54 bool TEMP VAR tp55 dptr TEMP VAR tp56 dptr TEMP VAR len57 usize MUTABLE VAR len58 usize MUTABLE VAR t59 int TEMP VAR t60 bool TEMP VAR tp61 dptr TEMP VAR tp62 dptr TEMP VAR t63 usize TEMP VAR t64 usize TEMP VAR len65 usize MUTABLE VAR len66 usize MUTABLE VAR t67 int TEMP VAR t68 bool TEMP VAR tp69 dptr TEMP VAR tp70 dptr TEMP VAR t71 int TEMP VAR tp72 dptr TEMP VAR tp73 dptr TEMP VAR tp74 dptr TEMP VAR t75 int TEMP VAR tp76 dptr TEMP VAR tp77 dptr TEMP VAR t78 int TEMP VAR t79 bool TEMP VAR t80 bool TEMP VAR tp81 dptr TEMP VAR tp82 dptr TEMP VAR len83 usize MUTABLE VAR len84 usize MUTABLE VAR t85 int TEMP VAR t86 bool TEMP VAR tp87 dptr TEMP VAR tp88 dptr TEMP VAR len89 usize MUTABLE VAR len90 usize MUTABLE VAR t91 int TEMP VAR t92 bool TEMP VAR tp93 dptr TEMP VAR tp94 dptr TEMP VAR len95 usize MUTABLE VAR len96 usize MUTABLE VAR t97 int TEMP VAR t98 bool TEMP VAR tp99 dptr TEMP VAR tp100 dptr TEMP VAR tp101 dptr TEMP VAR tp102 dptr TEMP VAR t103 bool TEMP VAR tp104 dptr TEMP VAR tp105 dptr TEMP VAR tp106 dptr TEMP VAR tp107 dptr TEMP VAR t108 bool TEMP VAR t109 bool TEMP VAR tp110 dptr TEMP VAR tp111 dptr TEMP VAR tp112 dptr TEMP VAR tp113 dptr TEMP VAR t114 bool TEMP VAR t115 bool TEMP VAR tp116 dptr TEMP VAR tp117 dptr TEMP VAR tp118 dptr TEMP VAR tp119 dptr TEMP VAR t120 bool TEMP VAR tp121 dptr TEMP VAR t122 int TEMP VAR t123 bool TEMP VAR tp124 dptr TEMP VAR t125 int TEMP VAR t126 bool TEMP VAR tp127 dptr TEMP VAR t128 int TEMP VAR t129 bool TEMP VAR tp130 dptr TEMP VAR t131 int TEMP VAR t132 bool TEMP VAR tp133 dptr TEMP VAR len135 usize MUTABLE VAR t136 int TEMP VAR t137 bool TEMP VAR tp138 dptr TEMP VAR len140 usize MUTABLE VAR len141 usize MUTABLE VAR t142 int TEMP VAR t143 bool TEMP ebb0: # var StructWithArrays s1 = (...constant literal...) LOADGLOBAL obj0, D113 # var int x = s1.intarr[0] ADDRLOCAL tp5, obj0 ADDRELEM tp6, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp5~, 0, 0 LOADELEM i1, [2]int, tp6~, 0, 0 # assert x == 111 EQ t8, i1, 111 CONDTRAP t8~, z # var usize i = expr_get_some_number() CALL_START 0 CALL_FUNCDEF normal, expr_get_some_number CALL_GET_RETURN len2 # var usize j = expr_get_some_number() CALL_START 0 CALL_FUNCDEF normal, expr_get_some_number CALL_GET_RETURN len3 # x = s1.intarr[i] ADDRLOCAL tp11, obj0 ADDRELEM tp12, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp11~, 0, 0 # s1.intarr MOVE len14, len2 NOP LOADELEM i1, [2]int, tp12~, len14~, 0 # x = ...[i] NOP DISCARD t15~ # s1.intarr[i] = 123 ADDRLOCAL tp16, obj0 ADDRELEM tp17, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp16~, 0, 0 MOVE len19, len2 NOP ADDRELEM tp20, [2]int, tp17~, len19~, 0 MOVETOPTR tp20~, 123 DISCARD tp20~ # assert s1.intarr[0] == 123 ADDRLOCAL tp21, obj0 ADDRELEM tp22, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp21~, 0, 0 LOADELEM t23, [2]int, tp22~, 0, 0 EQ t24, t23~, 123 CONDTRAP t24~, z # assert s1.intarr[expr_get_some_number()+1] == 222 ADDRLOCAL tp25, obj0 ADDRELEM tp26, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp25~, 0, 0 CALL_START 0 CALL_FUNCDEF normal, expr_get_some_number CALL_GET_RETURN t27 ADD len30, t27~, 1 NOP DISCARD len29~ # FIXME actually, this one is never used LOADELEM t31, [2]int, tp26~, len30~, 0 EQ t32, t31~, 222 CONDTRAP t32~, z # x = s1.intarr2[0,0] ADDRLOCAL tp33, obj0 ADDRELEM tp34, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp33~, 0, 1 LOADELEM i1, [6]int, tp34~, 0, 0 NOP DISCARD t35~ # x = s1.intarr2[0,2] ADDRLOCAL tp36, obj0 ADDRELEM tp37, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp36~, 0, 1 LOADELEM i1, [6]int, tp37~, 2, 0 NOP DISCARD t38~ # x = s1.intarr2[1,2] ADDRLOCAL tp39, obj0 ADDRELEM tp40, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp39~, 0, 1 LOADELEM i1, [6]int, tp40~, 5, 0 NOP DISCARD t41~ # assert x == 2003 EQ t42, i1, 2003 CONDTRAP t42~, z # assert st.intarr2[i,2] == 1003 ADDRLOCAL tp43, obj0 ADDRELEM tp44, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp43~, 0, 1 MUL_TRAP len45, len2, 3 ADD_TRAP len46, 2, len45~ LOADELEM t47, [6]int, tp44~, len46~, 0 EQ t48, t47~, 1003 CONDTRAP t48~, z # assert st.intarr2[1,j] == 2001 ADDRLOCAL tp49, obj0 ADDRELEM tp50, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp49~, 0, 1 MOVE len51, len3 ADD_TRAP len52, 3, len51~ LOADELEM t53, [6]int, tp50~, len52~, 0 EQ t54, t53~, 2001 CONDTRAP t54~, z # i = 1 MOVE len2, 1 # j = 2 MOVE len3, 2 # assert st.intarr2[i,j] == 2003 ADDRLOCAL tp55, obj0 ADDRELEM tp56, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp55~, 0, 1 MUL_TRAP len58, len2, 3 NOP MOVE len57, len3 ADD_TRAP len58, len58, len57~ LOADELEM t59, [6]int, tp56~, len58~, 0 EQ t60, t59~, 2003 CONDTRAP t60~, z # i = 0 MOVE len2, 0 # assert s1.intarr2[2*i,j-1] == 2002 ADDRLOCAL tp61, obj0 ADDRELEM tp62, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp61~, 0, 1 MUL t63, 2, len2 # FIXME should be MUL_TRAP (except for wuint) SUB t64, len3, 1 MUL_TRAP len66, t63~, 3 NOP MOVE len65, t64~ ADD_TRAP len66, len66, len65~ LOADELEM t67, [6]int, tp62~, len66~, 0 EQ t68, t67~, 1002 CONDTRAP t68~, z # x = s1.intarr3[1,0,2] ADDRLOCAL tp69, obj0 ADDRELEM tp70, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp69~, 0, 2 LOADELEM i1, [6]int, tp70~, 5, 0 NOP DISCARD t71~ # s1.intarr3[1,0,2] += 1 ADDRLOCAL tp72, obj0 ADDRELEM tp73, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp72~, 0, 2 ADDRELEM tp74, [6]int, tp73~, 5, 0 DEREF t75, tp74 ADD t75, t75~, 1 MOVETOPTR tp74~, t75~ # assert s1.intarr3[1,0,2] == 204 ADDRLOCAL tp76, obj0 ADDRELEM tp77, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp76~, 0, 2 LOADELEM t78, [6]int, tp77~, 5, 0 EQ t79, t78~, 204 CONDTRAP t79~, z # assert x == 203 EQ t80, i1, 203 CONDTRAP t80~, z # j -= 2 SUB len3, len3~, 2 # assert s1.intarr3[1,j,2] == 204 ADDRLOCAL tp81, obj0 ADDRELEM tp82, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp81~, 0, 2 MUL_TRAP len83, len3, 3 ADD_TRAP len84, 5, len83~ LOADELEM t85, [6]int, tp82~, len84~, 0 EQ t86, t85~, 204 CONDTRAP t86~, z # i += 1 ADD len2, len2~, 1 # assert s1.intarr3[i,j,2] == 204 ADDRLOCAL tp87, obj0 ADDRELEM tp88, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp87~, 0, 2 MUL_TRAP len89, len2, 3 # 2nd dimension is 1 ADD_TRAP len90, 2, len89~ MUL_TRAP len89, len3, 3 # j is always 0 because the 2d dim is 1 ADD_TRAP len90, len90, len89~ LOADELEM t91, [6]int, tp88~, len90~, 0 EQ t92, t91~, 204 CONDTRAP t92~, z # assert s1.intarr3[1,j,i] == 202 ADDRLOCAL tp93, obj0 ADDRELEM tp94, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp93~, 0, 2 MUL_TRAP len95, len3, 3 ADD_TRAP len96, 3, len95~ MOVE len95, len2 ADD_TRAP len96, len96, len95~ LOADELEM t97, [6]int, tp94~, len96~, 0 EQ t98, t97~, 202 CONDTRAP t98~, z # assert s1.nested[0].boolarr[0] ADDRLOCAL tp99, obj0 ADDRELEM tp100, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp99~, 0, 3 ADDRELEM tp101, [2]{[2]bool}, tp100~, 0, 0 ADDRELEM tp102, {[2]bool}, tp101~, 0, 0 LOADELEM t103, [2]bool, tp102~, 0, 0 CONDTRAP t103~, z # assert not s1.nested[0].boolarr[1] ADDRLOCAL tp104, obj0 ADDRELEM tp105, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp104~, 0, 3 ADDRELEM tp106, [2]{[2]bool}, tp105~, 0, 0 ADDRELEM tp107, {[2]bool}, tp106~, 0, 0 LOADELEM t108, [2]bool, tp107~, 1, 0 LNOT t109, t108~ CONDTRAP t109~, z # assert not s1.nested[1].boolarr[0] ADDRLOCAL tp110, obj0 ADDRELEM tp111, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp110~, 0, 3 ADDRELEM tp112, [2]{[2]bool}, tp111~, 1, 0 ADDRELEM tp113, {[2]bool}, tp112~, 0, 0 LOADELEM t114, [2]bool, tp113~, 0, 0 LNOT t115, t114~ CONDTRAP t115~, z # assert s1.nested[1].boolarr[1] ADDRLOCAL tp116, obj0 ADDRELEM tp117, {[2]int,[6]int,[6]int,[2]{[2]bool}}, tp116~, 0, 3 ADDRELEM tp118, [2]{[2]bool}, tp117~, 1, 0 ADDRELEM tp119, {[2]bool}, tp118~, 0, 0 LOADELEM t120, [2]bool, tp119~, 1, 0 CONDTRAP t120~, z # assert large_array[0] == 1 ADDRGLOBAL tp121, D34 LOADELEM t122, [2048]int, tp121~, 0, 0 EQ t123, t122~, 1 CONDTRAP t123~, z # assert large_array[1023] == 1024 ADDRGLOBAL tp124, D34 LOADELEM t125, [2048]int, tp124~, 1023, 0 EQ t126, t125~, 1024 CONDTRAP t126~, z # assert large_array[1024] == 1025 ADDRGLOBAL tp127, D34 LOADELEM t128, [2048]int, tp127~, 1024, 0 EQ t129, t128~, 1025 CONDTRAP t129~, z # assert large_array[2047] == 2048 ADDRGLOBAL tp130, D34 LOADELEM t131, [2048]int, tp130~, 2047, 0 EQ t132, t131~, 2048 CONDTRAP t132~, z # assert large_array[i] == 2 ADDRGLOBAL tp133, D34 MOVE len135, len2 NOP LOADELEM t136, [2048]int, tp133~, len135~, 0 EQ t137, t136~, 2 CONDTRAP t137~, z # assert large_array[2046+i] == 2048 ADDRGLOBAL tp138, D34 ADD len141, 2046, len2 NOP DISCARD len140~ LOADELEM t142, [2048]int, tp138~, len141~, 0 EQ t143, t142~, 2048 CONDTRAP t143~, z # ================================================== abi c function expr_array_pointer() -> void VAR arr0 [2]u8 ADDR VAR p1 dptr VAR tp3 dptr TEMP VAR t4 u8 TEMP VAR t5 bool TEMP VAR tp6 dptr TEMP VAR t7 u8 TEMP VAR t8 bool TEMP VAR t11 u8 TEMP VAR t12 bool TEMP VAR t13 u8 TEMP VAR t14 bool TEMP ebb0: # [2]byte arr = [11,22] LOADGLOBAL arr0, D112 # assert arr[0] == 11 ADDRLOCAL tp3, arr0 LOADELEM t4, [2]u8, tp3~, 0, 0 EQ t5, t4~, 11 CONDTRAP t5~, z # assert arr[1] == 22 ADDRLOCAL tp6, arr0 LOADELEM t7, [2]u8, tp6~, 1, 0 EQ t8, t7~, 22 CONDTRAP t8~, z # ref [2]byte arrptr = refto arr ADDRLOCAL p1, arr0 NOP # assert arrptr[0] == 11 LOADELEM t11, [2]u8, p1, 0, 0 EQ t12, t11~, 11 CONDTRAP t12~, z # assert arrptr[1] == 22 LOADELEM t13, [2]u8, p1, 1, 0 EQ t14, t13~, 22 CONDTRAP t14~, z # ================================================== abi c function expr_use_versioned() -> void VAR i0 int MUTABLE VAR p1 dptr VAR t2 int TEMP VAR tp4 dptr TEMP VAR tp5 dptr TEMP VAR tp6 dptr TEMP VAR tp7 dptr TEMP VAR tp8 dptr TEMP VAR tp9 dptr TEMP ebb0: # var VersionedEnum enu = .a MOVE i0, 0 # enu = .get_default() CALL_START 0 CALL_FUNCDEF normal, VersionedEnum_get_default CALL_GET_RETURN i0 NOP DISCARD t2~ # enu = .b MOVE i0, 1 # enu = .c MOVE i0, 2 # ref var VersionedStruct stru = .get_default() CALL_START 0 CALL_FUNCDEF normal, VersionedStruct_get_default CALL_GET_RETURN p1 # stru.a = true ADDRELEM tp4, {bool,{int,int},u8,int}, p1, 0, 0 MOVETOPTR tp4~, 1 DISCARD tp4~ # stru.b.x = 123 ADDRELEM tp5, {bool,{int,int},u8,int}, p1, 0, 1 ADDRELEM tp6, {int,int}, tp5~, 0, 0 MOVETOPTR tp6~, 123 DISCARD tp6~ # stru.b.y = 456 ADDRELEM tp7, {bool,{int,int},u8,int}, p1, 0, 1 ADDRELEM tp8, {int,int}, tp7~, 0, 1 MOVETOPTR tp8~, 456 DISCARD tp8~ # stru.c = 255 ADDRELEM tp9, {bool,{int,int},u8,int}, p1, 0, 2 MOVETOPTR tp9~, 255 DISCARD tp9~ # ================================================== abi c function expr_deeply_nested() -> void VAR u0 u64 VAR u1 u64 VAR u2 u64 VAR u3 u64 VAR u4 u64 VAR u5 u64 VAR u6 u64 VAR u7 u64 VAR u8 u64 VAR u9 u64 VAR u10 u64 VAR u11 u64 VAR u12 u64 VAR u13 u64 VAR u14 u64 VAR u15 u64 VAR u16 u64 VAR u17 u64 VAR u18 u64 VAR u19 u64 VAR u20 u64 ebb0: MOVE u0, 1 MOVE u1, 4 MOVE u2, 16 MOVE u3, 64 MOVE u4, 256 MOVE u5, 1024 MOVE u6, 4096 MOVE u7, 16384 MOVE u8, 65536 MOVE u9, 262144 MOVE u10, 1048576 MOVE u11, 4194304 MOVE u12, 16777216 MOVE u13, 67108864 MOVE u14, 268435456 MOVE u15, 1073741824 MOVE u16, 4294967296 MOVE u17, 17179869184 MOVE u18, 68719476736 MOVE u19, 274877906944 MOVE u20, 1099511627776 NOP # ================================================== abi c function expr_usize_return() -> usize ebb0: RETURN_ARG 1 # ================================================== abi c function expr_backend_optimize() -> void VAR i0 int MUTABLE VAR i1 int MUTABLE VAR arr2 [6]u8 ADDR MUTABLE VAR len3 usize MUTABLE VAR t5 int TEMP VAR t6 bool TEMP VAR t7 int TEMP VAR t8 bool TEMP VAR t9 int TEMP VAR t11 int TEMP VAR t12 bool TEMP VAR t13 int TEMP VAR t14 bool TEMP VAR tp16 dptr TEMP VAR t17 u8 TEMP VAR t18 bool TEMP VAR tp19 dptr TEMP VAR t20 u8 TEMP VAR t21 bool TEMP VAR tp22 dptr TEMP VAR t23 u8 TEMP VAR t24 bool TEMP VAR tp25 dptr TEMP VAR t26 u8 TEMP VAR t27 bool TEMP VAR tp28 dptr TEMP VAR t29 u8 TEMP VAR t30 bool TEMP VAR tp31 dptr TEMP VAR t32 u8 TEMP VAR t33 bool TEMP VAR tp35 dptr TEMP VAR len37 usize MUTABLE VAR len38 usize MUTABLE VAR t39 u8 TEMP VAR t40 bool TEMP VAR tp41 dptr TEMP VAR t42 usize TEMP VAR len44 usize MUTABLE VAR t45 u8 TEMP VAR t46 bool TEMP VAR tp47 dptr TEMP VAR t48 usize TEMP VAR len49 usize MUTABLE VAR len50 usize MUTABLE VAR t51 u8 TEMP VAR t52 bool TEMP VAR tp53 dptr TEMP VAR t54 usize TEMP VAR t55 usize TEMP VAR len56 usize MUTABLE VAR len57 usize MUTABLE VAR t58 u8 TEMP VAR t59 bool TEMP VAR t71 bool TEMP VAR t72 bool TEMP VAR t73 bool TEMP VAR t74 bool TEMP VAR t75 bool TEMP VAR t76 bool TEMP VAR t77 bool TEMP ebb0: # var int a = expr_return(0) CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, expr_return CALL_GET_RETURN i0 # x = a + 0 MOVE i1, i0 NOP DISCARD t5~ # assert x == 3 EQ t6, i1, 3 CONDTRAP t6~, z # x = a - 0 MOVE i1, i0 NOP DISCARD t7~ # assert x == 3 EQ t8, i1, 3 CONDTRAP t8~, z # x = a * 0 MOVE i1, 0 NOP DISCARD t9~ NOP # assert x == 0 CONDTRAP i1, nz # x = a * 1 MOVE i1, i0 NOP DISCARD t11~ # assert x == 3 EQ t12, i1, 3 CONDTRAP t12~, z # x = a / 1 MOVE i1, i0 NOP DISCARD t13~ # assert x == 3 EQ t14, i1, 3 CONDTRAP t14~, z # var [3,2]byte arr = [...constant literal...] LOADGLOBAL arr2, D111 # assert arr[0,0] == 11 ADDRLOCAL tp16, arr2 LOADELEM t17, [6]u8, tp16~, 0, 0 EQ t18, t17~, 11 CONDTRAP t18~, z # assert arr[0,1] == 22 ADDRLOCAL tp19, arr2 LOADELEM t20, [6]u8, tp19~, 1, 0 EQ t21, t20~, 22 CONDTRAP t21~, z # assert arr[1,0] == 33 ADDRLOCAL tp22, arr2 LOADELEM t23, [6]u8, tp22~, 2, 0 EQ t24, t23~, 33 CONDTRAP t24~, z # assert arr[1,1] == 44 ADDRLOCAL tp25, arr2 LOADELEM t26, [6]u8, tp25~, 3, 0 EQ t27, t26~, 44 CONDTRAP t27~, z # assert arr[2,0] == 55 ADDRLOCAL tp28, arr2 LOADELEM t29, [6]u8, tp28~, 4, 0 EQ t30, t29~, 55 CONDTRAP t30~, z # assert arr[2,1] == 66 ADDRLOCAL tp31, arr2 LOADELEM t32, [6]u8, tp31~, 5, 0 EQ t33, t32~, 66 CONDTRAP t33~, z # var usize i = expr_usize_return() CALL_START 0 CALL_FUNCDEF normal, expr_usize_return CALL_GET_RETURN len3 # assert arr[0,1-i] == 11 ADDRLOCAL tp35, arr2 SUB len38, 1, len3 NOP DISCARD len37~ # FIXME actually, this one is never used LOADELEM t39, [6]u8, tp35~, len38~, 0 EQ t40, t39~, 11 CONDTRAP t40~, z # assert arr[1-i,0] == 11 ADDRLOCAL tp41, arr2 SUB t42, 1, len3 MUL_TRAP len44, t42~, 2 NOP LOADELEM t45, [6]u8, tp41~, len44~, 0 EQ t46, t45~, 11 CONDTRAP t46~, z # assert arr[1-i,1] == 22 ADDRLOCAL tp47, arr2 SUB t48, 1, len3 MUL_TRAP len49, t48~, 2 ADD_TRAP len50, 1, len49~ LOADELEM t51, [6]u8, tp47~, len50~, 0 EQ t52, t51~, 22 CONDTRAP t52~, z # assert arr[2-i,1-i] == 33 ADDRLOCAL tp53, arr2 SUB t54, 2, len3 SUB t55, 1, len3 MUL_TRAP len57, t54~, 2 NOP MOVE len56, t55~ ADD_TRAP len57, len57, len56~ LOADELEM t58, [6]u8, tp53~, len57~, 0 EQ t59, t58~, 33 CONDTRAP t59~, z # x = 0 MOVE i1, 0 # assert x == 0 NOP CONDTRAP i1, nz # assert i != 0 NOP CONDTRAP len3, z # x = -1 MOVE i1, -1 # assert x < 0 NOP CONDTRAP i1, gez # assert x <= 0 NOP CONDTRAP i1, gz # assert i > 0 NOP CONDTRAP len3, lez # assert i >= 0 NOP CONDTRAP len3, lz # if i == 0 { NOP CONDJUMP ebb2, len3, nz, _ ebb1: TRAP ebb2: # if i < 0 { NOP CONDJUMP ebb4, len3, gez, _ ebb3: TRAP ebb4: # if i <= 0 NOP CONDJUMP ebb6, len3, gz, _ ebb5: TRAP ebb6: JUMP ebb7 ebb7: # while x > 0 { NOP CONDJUMP ebb8, i1, gz, likely JUMP ebb9 ebb8: TRAP ebb9: JUMP ebb10 ebb10: # while x >= 0 NOP CONDJUMP ebb11, i1, gez, likely JUMP ebb12 ebb11: TRAP ebb12: JUMP ebb14 ebb13: # do { } while x == -2 # (starts from ebb14) EQ t71, i1, -2 CONDJUMP ebb14, t71~, nz, likely JUMP ebb15 ebb14: JUMP ebb13 ebb15: # if i == 11 or i == 22 { EQ t72, len3, 11 EQ t73, len3, 22 LOR t74, t72~, t73~ CONDJUMP ebb17, t74~, z, _ ebb16: TRAP ebb17: # if (i == 11) != (i == 22) { EQ t75, len3, 11 EQ t76, len3, 22 NEQ t77, t75~, t76~ # TODO could be optimized out with a COMPAREJUMP CONDJUMP ebb19, t77~, z, _ ebb18: TRAP ebb19: # ================================================== abi c function expr_missing_indentation() -> int VAR i0 int MUTABLE VAR b1 bool VAR arr2 [2]u8 VAR t3 bool TEMP VAR t4 bool TEMP VAR t6 bool TEMP ebb0: MOVE i0, 1 ADD i0, i0~, 11 GT t3, i0, 2 CONDJUMP ebb2, t3~, z, _ ebb1: ADD i0, i0~, 3 JUMP ebb3 ebb2: LT t4, i0, 10 CONDJUMP ebb5, t4~, z, _ JUMP ebb4 ebb3: MOVE b1, 0 LOADGLOBAL arr2, D110 EQ t6, i0, 15 CONDTRAP t6~, z RETURN_ARG 123 ebb4: RETURN_ARG -1 ebb5: JUMP ebb3 # ================================================== abi c function for_loops_array() -> void VAR arr0 [5]u8 VAR i1 int MUTABLE VAR t3 bool TEMP ebb0: LOADGLOBAL arr0, D109 MOVE i1, 0 JUMP ebb3 ebb1: ebb2: ebb3: EQ t3, i1, 14 CONDTRAP t3~, z RETURN_VOID ebb4: ebb5: ebb6: # ================================================== abi c function test_function_calls() -> void VAR b0 bool VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP VAR t6 bool TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, f_void CALL_DISCARD_RETURN CALL_START 1 CALL_ARG 123 CALL_FUNCDEF normal, f_int_void CALL_DISCARD_RETURN CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, f_bool_void CALL_DISCARD_RETURN CALL_START 2 CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, f_intbool_void CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, f_bool CALL_GET_RETURN b0 JUMP ebb1 ebb1: CALL_START 1 CALL_ARG 123 CALL_FUNCDEF normal, f_int_bool CALL_GET_RETURN t2 LNOT t3, t2~ CONDJUMP ebb2, t3~, nz, likely JUMP ebb3 ebb2: JUMP ebb1 ebb3: JUMP ebb5 ebb4: CALL_START 2 CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, f_intbool_bool CALL_GET_RETURN t5 LNOT t6, t5~ CONDJUMP ebb5, t6~, nz, likely JUMP ebb6 ebb5: CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, f_bool_bool CALL_GET_RETURN t4 CONDJUMP ebb8, t4~, z, _ JUMP ebb7 ebb6: CONDTRAP b0, z CALL_START 0 CALL_FUNCDEF normal, f_bool CALL_DISCARD_RETURN CALL_START 1 CALL_ARG 123 CALL_FUNCDEF normal, f_int_bool CALL_DISCARD_RETURN CALL_START 1 CALL_ARG 0 CALL_FUNCDEF normal, f_bool_bool CALL_DISCARD_RETURN CALL_START 2 CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, f_intbool_bool CALL_DISCARD_RETURN RETURN_VOID ebb7: ebb8: JUMP ebb4 # ================================================== abi c function f_void() -> void ebb0: # ================================================== abi c function f_int_void( int ) -> void VAR arg0 int PARAM VAR t1 bool TEMP ebb0: EQ t1, arg0, 123 CONDTRAP t1~, z # ================================================== abi c function f_bool_void( bool ) -> void VAR arg0 bool PARAM VAR t1 bool TEMP ebb0: LNOT t1, arg0 CONDTRAP t1~, z # ================================================== abi c function f_intbool_void( int bool ) -> void VAR arg0 int PARAM VAR arg1 bool PARAM VAR t2 bool TEMP ebb0: EQ t2, arg0, -456 CONDTRAP t2~, z CONDTRAP arg1, z # ================================================== abi c function f_bool() -> bool ebb0: RETURN_ARG 1 # ================================================== abi c function f_int_bool( int ) -> bool VAR arg0 int PARAM VAR t1 bool TEMP ebb0: EQ t1, arg0, 123 CONDTRAP t1~, z RETURN_ARG 1 # ================================================== abi c function f_bool_bool( bool ) -> bool VAR arg0 bool PARAM VAR t1 bool TEMP ebb0: LNOT t1, arg0 CONDTRAP t1~, z RETURN_ARG 1 # ================================================== abi c function f_intbool_bool( int bool ) -> bool VAR arg0 int PARAM VAR arg1 bool PARAM VAR t2 bool TEMP ebb0: EQ t2, arg0, -456 CONDTRAP t2~, z CONDTRAP arg1, z RETURN_ARG 1 # ================================================== abi c function test_method_calls_byvalue() -> void VAR obj0 {int,bool} ADDR MUTABLE VAR b1 bool VAR tp3 dptr TEMP VAR tp4 dptr TEMP VAR tp5 dptr TEMP VAR tp6 dptr TEMP VAR tp7 dptr TEMP VAR tp8 dptr TEMP VAR tp9 dptr TEMP VAR tp10 dptr TEMP VAR tp11 dptr TEMP VAR tp13 dptr TEMP VAR t14 bool TEMP VAR t15 bool TEMP VAR tp16 dptr TEMP VAR t17 bool TEMP VAR tp18 dptr TEMP VAR t19 bool TEMP VAR t20 bool TEMP VAR tp21 dptr TEMP VAR tp22 dptr TEMP VAR tp23 dptr TEMP VAR tp24 dptr TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, FuncObj_init CALL_GET_RETURN obj0 ADDRLOCAL tp3, obj0 ADDRELEM tp4, {int,bool}, tp3~, 0, 0 MOVETOPTR tp4~, 678 DISCARD tp4~ ADDRLOCAL tp5, obj0 ADDRELEM tp6, {int,bool}, tp5~, 0, 1 MOVETOPTR tp6~, 1 DISCARD tp6~ ADDRLOCAL tp7, obj0 CALL_START 1 CALL_ARG tp7~ CALL_FUNCDEF normal, FuncObj_f_void CALL_DISCARD_RETURN DISCARD tp7~ ADDRLOCAL tp8, obj0 CALL_START 2 CALL_ARG tp8~ CALL_ARG 123 CALL_FUNCDEF normal, FuncObj_f_int_void CALL_DISCARD_RETURN DISCARD tp8~ ADDRLOCAL tp9, obj0 CALL_START 2 CALL_ARG tp9~ CALL_ARG 0 CALL_FUNCDEF normal, FuncObj_f_bool_void CALL_DISCARD_RETURN DISCARD tp9~ ADDRLOCAL tp10, obj0 CALL_START 3 CALL_ARG tp10~ CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, FuncObj_f_intbool_void CALL_DISCARD_RETURN DISCARD tp10~ ADDRLOCAL tp11, obj0 CALL_START 1 CALL_ARG tp11~ CALL_FUNCDEF normal, FuncObj_f_bool CALL_GET_RETURN b1 JUMP ebb1 ebb1: ADDRLOCAL tp13, obj0 CALL_START 2 CALL_ARG tp13~ CALL_ARG 123 CALL_FUNCDEF normal, FuncObj_f_int_bool CALL_GET_RETURN t14 LNOT t15, t14~ CONDJUMP ebb2, t15~, nz, likely JUMP ebb3 ebb2: JUMP ebb1 ebb3: JUMP ebb5 ebb4: ADDRLOCAL tp18, obj0 CALL_START 3 CALL_ARG tp18~ CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, FuncObj_f_intbool_bool CALL_GET_RETURN t19 LNOT t20, t19~ CONDJUMP ebb5, t20~, nz, likely JUMP ebb6 ebb5: ADDRLOCAL tp16, obj0 CALL_START 2 CALL_ARG tp16~ CALL_ARG 0 CALL_FUNCDEF normal, FuncObj_f_bool_bool CALL_GET_RETURN t17 CONDJUMP ebb8, t17~, z, _ JUMP ebb7 ebb6: CONDTRAP b1, z ADDRLOCAL tp21, obj0 CALL_START 1 CALL_ARG tp21~ CALL_FUNCDEF normal, FuncObj_f_bool CALL_DISCARD_RETURN DISCARD tp21~ ADDRLOCAL tp22, obj0 CALL_START 2 CALL_ARG tp22~ CALL_ARG 123 CALL_FUNCDEF normal, FuncObj_f_int_bool CALL_DISCARD_RETURN DISCARD tp22~ ADDRLOCAL tp23, obj0 CALL_START 2 CALL_ARG tp23~ CALL_ARG 0 CALL_FUNCDEF normal, FuncObj_f_bool_bool CALL_DISCARD_RETURN DISCARD tp23~ ADDRLOCAL tp24, obj0 CALL_START 3 CALL_ARG tp24~ CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, FuncObj_f_intbool_bool CALL_DISCARD_RETURN DISCARD tp24~ RETURN_VOID ebb7: ebb8: JUMP ebb4 # ================================================== abi c function test_method_calls_byref() -> void VAR obj0 {int,bool} ADDR MUTABLE VAR p1 dptr VAR b2 bool VAR tp4 dptr TEMP VAR tp5 dptr TEMP VAR tp6 dptr TEMP VAR tp7 dptr TEMP VAR t11 bool TEMP VAR t12 bool TEMP VAR t13 bool TEMP VAR t14 bool TEMP VAR t15 bool TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, FuncObj_init CALL_GET_RETURN obj0 ADDRLOCAL tp4, obj0 ADDRELEM tp5, {int,bool}, tp4~, 0, 0 MOVETOPTR tp5~, 678 DISCARD tp5~ ADDRLOCAL tp6, obj0 ADDRELEM tp7, {int,bool}, tp6~, 0, 1 MOVETOPTR tp7~, 1 DISCARD tp7~ ADDRLOCAL p1, obj0 NOP CALL_START 1 CALL_ARG p1 CALL_FUNCDEF normal, FuncObj_f_void CALL_DISCARD_RETURN CALL_START 2 CALL_ARG p1 CALL_ARG 123 CALL_FUNCDEF normal, FuncObj_f_int_void CALL_DISCARD_RETURN CALL_START 2 CALL_ARG p1 CALL_ARG 0 CALL_FUNCDEF normal, FuncObj_f_bool_void CALL_DISCARD_RETURN CALL_START 3 CALL_ARG p1 CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, FuncObj_f_intbool_void CALL_DISCARD_RETURN CALL_START 1 CALL_ARG p1 CALL_FUNCDEF normal, FuncObj_f_bool CALL_GET_RETURN b2 JUMP ebb1 ebb1: CALL_START 2 CALL_ARG p1 CALL_ARG 123 CALL_FUNCDEF normal, FuncObj_f_int_bool CALL_GET_RETURN t11 LNOT t12, t11~ CONDJUMP ebb2, t12~, nz, likely JUMP ebb3 ebb2: JUMP ebb1 ebb3: JUMP ebb5 ebb4: CALL_START 3 CALL_ARG p1 CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, FuncObj_f_intbool_bool CALL_GET_RETURN t14 LNOT t15, t14~ CONDJUMP ebb5, t15~, nz, likely JUMP ebb6 ebb5: CALL_START 2 CALL_ARG p1 CALL_ARG 0 CALL_FUNCDEF normal, FuncObj_f_bool_bool CALL_GET_RETURN t13 CONDJUMP ebb8, t13~, z, _ JUMP ebb7 ebb6: CALL_START 1 CALL_ARG p1 CALL_FUNCDEF normal, FuncObj_f_bool CALL_DISCARD_RETURN CALL_START 2 CALL_ARG p1 CALL_ARG 123 CALL_FUNCDEF normal, FuncObj_f_int_bool CALL_DISCARD_RETURN CALL_START 2 CALL_ARG p1 CALL_ARG 0 CALL_FUNCDEF normal, FuncObj_f_bool_bool CALL_DISCARD_RETURN CALL_START 3 CALL_ARG p1 CALL_ARG -456 CALL_ARG 1 CALL_FUNCDEF normal, FuncObj_f_intbool_bool CALL_DISCARD_RETURN RETURN_VOID ebb7: ebb8: JUMP ebb4 # ================================================== abi c function FuncObj_init() -> {int,bool} VAR tobj0 {int,bool} TEMP ebb0: LOADGLOBAL tobj0, D108 RETURN_ARG tobj0~ # ================================================== abi c function FuncObj_f_void( dptr ) -> void VAR arg0 dptr PARAM UNUSED ebb0: # ================================================== abi c function FuncObj_f_int_void( dptr int ) -> void VAR arg0 dptr PARAM UNUSED VAR arg1 int PARAM VAR t2 bool TEMP ebb0: EQ t2, arg1, 123 CONDTRAP t2~, z # ================================================== abi c function FuncObj_f_bool_void( dptr bool ) -> void VAR arg0 dptr PARAM UNUSED VAR arg1 bool PARAM VAR t2 bool TEMP ebb0: LNOT t2, arg1 CONDTRAP t2~, z # ================================================== abi c function FuncObj_f_intbool_void( dptr int bool ) -> void VAR arg0 dptr PARAM UNUSED VAR arg1 int PARAM VAR arg2 bool PARAM VAR t3 bool TEMP ebb0: EQ t3, arg1, -456 CONDTRAP t3~, z CONDTRAP arg2, z # ================================================== abi c function FuncObj_f_bool( dptr ) -> bool VAR arg0 dptr PARAM UNUSED ebb0: RETURN_ARG 1 # ================================================== abi c function FuncObj_f_int_bool( dptr int ) -> bool VAR arg0 dptr PARAM UNUSED VAR arg1 int PARAM VAR t2 bool TEMP ebb0: EQ t2, arg1, 123 CONDTRAP t2~, z RETURN_ARG 1 # ================================================== abi c function FuncObj_f_bool_bool( dptr bool ) -> bool VAR arg0 dptr PARAM UNUSED VAR arg1 bool PARAM VAR t2 bool TEMP ebb0: LNOT t2, arg1 CONDTRAP t2~, z RETURN_ARG 1 # ================================================== abi c function FuncObj_f_intbool_bool( dptr int bool ) -> bool VAR arg0 dptr PARAM UNUSED VAR arg1 int PARAM VAR arg2 bool PARAM VAR t3 bool TEMP ebb0: EQ t3, arg1, -456 CONDTRAP t3~, z CONDTRAP arg2, z RETURN_ARG 1 # ================================================== abi c function FuncObj_access_fields( dptr int ) -> void VAR arg0 dptr PARAM VAR arg1 int PARAM VAR obj2 {int,bool} ADDR MUTABLE VAR t3 bool TEMP VAR tp4 dptr TEMP VAR t5 int TEMP VAR t6 int TEMP VAR t7 int TEMP VAR tp8 dptr TEMP VAR t9 int TEMP VAR t10 bool TEMP VAR t11 int TEMP VAR t12 bool TEMP VAR tp13 dptr TEMP VAR tp15 dptr TEMP VAR t16 int TEMP VAR t17 bool TEMP VAR tp18 dptr TEMP VAR tp19 dptr TEMP VAR tp20 dptr TEMP VAR tp21 dptr TEMP VAR t22 bool TEMP VAR tp23 dptr TEMP VAR tp24 dptr TEMP VAR tp25 dptr TEMP VAR t26 int TEMP VAR t27 bool TEMP VAR tp28 dptr TEMP VAR tp29 dptr TEMP VAR tp30 dptr TEMP VAR t31 int TEMP VAR t32 bool TEMP VAR tp33 dptr TEMP VAR tp34 dptr TEMP VAR t35 int TEMP VAR t36 bool TEMP VAR tp37 dptr TEMP VAR tp38 dptr TEMP VAR t39 int TEMP VAR t40 bool TEMP ebb0: # if this.b { LOADELEM t3, {int,bool}, arg0, 0, 1 CONDJUMP ebb2, t3~, z, _ ebb1: # this.x += value * this.x ADDRELEM tp4, {int,bool}, arg0, 0, 0 LOADELEM t5, {int,bool}, arg0, 0, 0 MUL t6, arg1, t5~ DEREF t7, tp4 ADD t7, t7~, t6~ MOVETOPTR tp4~, t7~ JUMP ebb3 ebb2: # this.b = (this.x == value) ADDRELEM tp8, {int,bool}, arg0, 0, 1 # this.b LOADELEM t9, {int,bool}, arg0, 0, 0 # this.x EQ t10, t9~, arg1 # value MOVETOPTR tp8~, t10~ DISCARD t10~ # assert this.x == value LOADELEM t11, {int,bool}, arg0, 0, 0 EQ t12, t11~, arg1 CONDTRAP t12~, z # this.b = true ADDRELEM tp13, {int,bool}, arg0, 0, 1 MOVETOPTR tp13~, 1 DISCARD tp13~ # var FuncObj obj = (.x=111, .b=true) LOADGLOBAL obj2, D107 # assert obj.x == 111 ADDRLOCAL tp15, obj2 LOADELEM t16, {int,bool}, tp15~, 0, 0 EQ t17, t16~, 111 CONDTRAP t17~, z # obj.b = true ADDRLOCAL tp18, obj2 ADDRELEM tp19, {int,bool}, tp18~, 0, 1 MOVETOPTR tp19~, 1 DISCARD tp19~ # obj.b = (value == 111) ADDRLOCAL tp20, obj2 ADDRELEM tp21, {int,bool}, tp20~, 0, 1 EQ t22, arg1, 111 MOVETOPTR tp21~, t22~ DISCARD t22~ # obj.b = (obj.x == 222) ADDRLOCAL tp23, obj2 ADDRELEM tp24, {int,bool}, tp23~, 0, 1 ADDRLOCAL tp25, obj2 LOADELEM t26, {int,bool}, tp25~, 0, 0 EQ t27, t26~, 222 MOVETOPTR tp24~, t27~ DISCARD t27~ # obj.b = (obj.x == value) ADDRLOCAL tp28, obj2 ADDRELEM tp29, {int,bool}, tp28~, 0, 1 ADDRLOCAL tp30, obj2 LOADELEM t31, {int,bool}, tp30~, 0, 0 EQ t32, t31~, arg1 MOVETOPTR tp29~, t32~ DISCARD t32~ # obj.b = (this.x == value) ADDRLOCAL tp33, obj2 ADDRELEM tp34, {int,bool}, tp33~, 0, 1 LOADELEM t35, {int,bool}, arg0, 0, 0 EQ t36, t35~, arg1 MOVETOPTR tp34~, t36~ DISCARD t36~ # this.b = (obj.x == value) ADDRELEM tp37, {int,bool}, arg0, 0, 1 ADDRLOCAL tp38, obj2 LOADELEM t39, {int,bool}, tp38~, 0, 0 EQ t40, t39~, arg1 MOVETOPTR tp37~, t40~ DISCARD t40~ ebb3: # ================================================== abi c function generics_test1() -> void VAR obj0 {int} ADDR VAR obj1 {bool,int} VAR obj2 {int,int} ADDR VAR obj3 {dptr} ADDR VAR obj4 {dptr} VAR obj5 {{dptr},{dptr},{dptr},dptr} VAR obj6 {dptr} ADDR MUTABLE VAR obj7 {{dptr},{dptr},{dptr},dptr} ADDR MUTABLE VAR obj8 {{dptr},{dptr},{dptr},dptr} ADDR MUTABLE VAR obj9 {dptr} ADDR MUTABLE VAR obj10 {dptr} ADDR MUTABLE VAR obj11 {dptr} MUTABLE VAR obj12 {dptr} ADDR MUTABLE VAR obj13 {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}} ADDR MUTABLE VAR i14 int ADDR MUTABLE VAR p15 dptr MUTABLE VAR obj16 {{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}} MUTABLE VAR tp22 dptr TEMP VAR tp25 dptr TEMP VAR tobj26 {dptr} TEMP VAR tp28 dptr TEMP VAR tobj29 {dptr} TEMP VAR tp31 dptr TEMP VAR tp33 dptr TEMP VAR tp34 dptr TEMP VAR tp35 dptr TEMP VAR tp36 dptr TEMP VAR tp37 dptr TEMP VAR tp39 dptr TEMP VAR tp40 dptr TEMP VAR tp41 dptr TEMP VAR tp42 dptr TEMP VAR tp44 dptr TEMP VAR tp45 dptr TEMP VAR tp46 dptr TEMP VAR tp48 dptr TEMP VAR tp50 dptr TEMP VAR tobj51 {dptr} TEMP VAR tp53 dptr TEMP VAR tp54 dptr TEMP VAR t55 bool TEMP VAR tp56 dptr TEMP VAR tp57 dptr TEMP VAR tp58 dptr TEMP VAR tp60 dptr TEMP VAR t61 bool TEMP VAR tp62 dptr TEMP VAR tp63 dptr TEMP VAR t64 bool TEMP VAR t65 bool TEMP VAR tp66 dptr TEMP VAR t67 bool TEMP VAR tp68 dptr TEMP VAR tp69 dptr TEMP VAR tp70 dptr TEMP VAR tp72 dptr TEMP VAR tp73 dptr TEMP VAR tp74 dptr TEMP VAR tp75 dptr TEMP VAR tp78 dptr TEMP VAR tp80 dptr TEMP VAR tp81 dptr TEMP VAR tp83 dptr TEMP VAR tp84 dptr TEMP VAR tp85 dptr TEMP VAR tp86 dptr TEMP VAR tp88 dptr TEMP VAR tp91 dptr TEMP VAR tp93 dptr TEMP VAR tp94 dptr TEMP VAR tp96 dptr TEMP VAR tp97 dptr TEMP VAR tp98 dptr TEMP VAR tp99 dptr TEMP VAR tp101 dptr TEMP VAR tp102 dptr TEMP VAR tp103 dptr TEMP VAR tp104 dptr TEMP VAR tp105 dptr TEMP VAR tp107 dptr TEMP VAR tp109 dptr TEMP VAR tarr110 [2]{{dptr},{dptr},{dptr},dptr} TEMP VAR tp112 dptr TEMP VAR tp113 dptr TEMP VAR tp115 dptr TEMP VAR tp116 dptr TEMP VAR tp117 dptr TEMP VAR tp119 dptr TEMP VAR tp120 dptr TEMP VAR tp121 dptr TEMP VAR tarr122 [2]{{dptr},{dptr},{dptr},dptr} TEMP VAR tp126 dptr TEMP VAR tp127 dptr TEMP VAR tobj128 {dptr} TEMP VAR tp129 dptr TEMP VAR t130 int TEMP VAR tp131 dptr TEMP VAR tp133 dptr TEMP VAR tp134 dptr TEMP ebb0: # NonGeneric1 ng1 = (.x=1100) LOADGLOBAL obj0, D102 # NonGeneric2 ng2 = (.b=true, .y=2200) LOADGLOBAL obj1, D103 # NonGeneric3 ng3 = (.a=3300, .x=3400) LOADGLOBAL obj2, D104 # Generic2 g2_int = (.elem = 111) LOADGLOBAL obj3, D105 # Generic2 g2 = (.elem = refto ng1) ADDRLOCAL tp22, obj0 NOP MOVE obj4, 123 # Generic1 g1 = (...) ADDRLOCAL tp25, obj0 NOP MOVE tobj26, 123 ADDRLOCAL tp28, obj2 NOP MOVE tobj29, 123 ADDRLOCAL tp31, obj0 NOP MOVE obj5, 123 # var Generic2 g2_int_b = g2_int MOVE obj6, obj3 # g2_int_b.elem = 222 ADDRLOCAL tp33, obj6 ADDRELEM tp34, {dptr}, tp33~, 0, 0 MOVETOPTR tp34~, 222 DISCARD tp34~ # g1_b = g1 MOVE obj7, obj5 # g1_b.same.elem = refto ng1 ADDRLOCAL tp35, obj7 ADDRELEM tp36, {{dptr},{dptr},{dptr},dptr}, tp35~, 0, 0 # FIXME should be LOADELEM ADDRELEM tp37, {dptr}, tp36~, 0, 0 ADDRLOCAL tp39, obj0 NOP MOVETOPTR tp37~, tp39~ DISCARD tp39~ # g1_b.fixed.elem = refto ng3 ADDRLOCAL tp40, obj7 ADDRELEM tp41, {{dptr},{dptr},{dptr},dptr}, tp40~, 0, 1 # FIXME should be LOADELEM ADDRELEM tp42, {dptr}, tp41~, 0, 0 ADDRLOCAL tp44, obj2 NOP MOVETOPTR tp42~, tp44~ DISCARD tp44~ # g1_b.elem = refto ng1 ADDRLOCAL tp45, obj7 ADDRELEM tp46, {{dptr},{dptr},{dptr},dptr}, tp45~, 0, 3 ADDRLOCAL tp48, obj0 NOP MOVETOPTR tp46~, tp48~ DISCARD tp48~ # var Generic1 g1_bool = (...) ADDRLOCAL tp50, obj2 NOP MOVE tobj51, 123 MOVE obj8, 123 # assert g1_bool.same.elem ADDRLOCAL tp53, obj8 ADDRELEM tp54, {{dptr},{dptr},{dptr},dptr}, tp53~, 0, 0 # FIXME should be LOADELEM LOADELEM t55, {dptr}, tp54~, 0, 0 CONDTRAP t55~, z # assert g1_bool.fixed.elem ref_is refto ng3 ADDRLOCAL tp56, obj8 ADDRELEM tp57, {{dptr},{dptr},{dptr},dptr}, tp56~, 0, 1 # FIXME should be LOADELEM LOADELEM tp58, {dptr}, tp57~, 0, 0 ADDRLOCAL tp60, obj2 NOP EQ t61, tp58~, tp60~ CONDTRAP t61~, z # assert not g1_bool.also_same.elem ADDRLOCAL tp62, obj8 ADDRELEM tp63, {{dptr},{dptr},{dptr},dptr}, tp62~, 0, 2 # FIXME should be LOADELEM LOADELEM t64, {dptr}, tp63~, 0, 0 LNOT t65, t64~ CONDTRAP t65~, z # assert g1_bool.elem ADDRLOCAL tp66, obj8 LOADELEM t67, {{dptr},{dptr},{dptr},dptr}, tp66~, 0, 3 CONDTRAP t67~, z # g1_bool.fixed.elem = refto ng3 ADDRLOCAL tp68, obj8 ADDRELEM tp69, {{dptr},{dptr},{dptr},dptr}, tp68~, 0, 1 # FIXME should be LOADELEM ADDRELEM tp70, {dptr}, tp69~, 0, 0 ADDRLOCAL tp72, obj2 NOP MOVETOPTR tp70~, tp72~ DISCARD tp72~ # g1_bool.also_same.elem = true ADDRLOCAL tp73, obj8 ADDRELEM tp74, {{dptr},{dptr},{dptr},dptr}, tp73~, 0, 2 # FIXME should be LOADELEM ADDRELEM tp75, {dptr}, tp74~, 0, 0 MOVETOPTR tp75~, 1 DISCARD tp75~ # var Generic2 g2_bool = (.elem = true) LOADGLOBAL obj9, D106 # var Generic2> g2_nested = (...) ADDRLOCAL tp78, obj3 NOP MOVE obj10, 123 # g2_nested.elem = refto g2_int ADDRLOCAL tp80, obj10 ADDRELEM tp81, {dptr}, tp80~, 0, 0 ADDRLOCAL tp83, obj3 NOP MOVETOPTR tp81~, tp83~ DISCARD tp83~ # g2_nested.elem.elem = 333 ADDRLOCAL tp84, obj10 LOADELEM tp85, {dptr}, tp84~, 0, 0 ADDRELEM tp86, {dptr}, tp85~, 0, 0 # FIXME should use a special uint32_or_dptr type MOVETOPTR tp86~, 333 DISCARD tp86~ # var Generic2> g2_nested_bool = (...) ADDRLOCAL tp88, obj9 NOP MOVE obj11, 123 # var Generic2>> g2_doublenested = (...) ADDRLOCAL tp91, obj10 NOP MOVE obj12, 123 # g2_doublenested.elem = refto g2_nested ADDRLOCAL tp93, obj12 ADDRELEM tp94, {dptr}, tp93~, 0, 0 ADDRLOCAL tp96, obj10 NOP MOVETOPTR tp94~, tp96~ DISCARD tp96~ # g2_doublenested.elem.elem = refto g2_int ADDRLOCAL tp97, obj12 LOADELEM tp98, {dptr}, tp97~, 0, 0 ADDRELEM tp99, {dptr}, tp98~, 0, 0 ADDRLOCAL tp101, obj3 NOP MOVETOPTR tp99~, tp101~ DISCARD tp101~ # g2_doublenested.elem.elem.elem = 444 ADDRLOCAL tp102, obj12 LOADELEM tp103, {dptr}, tp102~, 0, 0 LOADELEM tp104, {dptr}, tp103~, 0, 0 ADDRELEM tp105, {dptr}, tp104~, 0, 0 # FIXME should use a special uint32_or_dptr type MOVETOPTR tp105~, 444 DISCARD tp105~ # var Generic3 g3_intbool = (...) ADDRLOCAL tp107, obj3 NOP ADDRLOCAL tp109, obj9 NOP MOVE tarr110, 123 MOVE obj13, 123 # g3_intbool.a = refto g2_int ADDRLOCAL tp112, obj13 ADDRELEM tp113, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, tp112~, 0, 0 ADDRLOCAL tp115, obj3 NOP MOVETOPTR tp113~, tp115~ DISCARD tp115~ # g3_intbool.b = refto g2_bool ADDRLOCAL tp116, obj13 ADDRELEM tp117, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, tp116~, 0, 1 ADDRLOCAL tp119, obj9 NOP MOVETOPTR tp117~, tp119~ DISCARD tp119~ # g3_intbool.arr = [g1_bool, g1_bool] ADDRLOCAL tp120, obj13 ADDRELEM tp121, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, tp120~, 0, 2 MOVE tarr122, 123 MOVETOPTR tp121~, tarr122 DISCARD tarr122~ # var int i = 123 MOVE i14, 123 # var ref var int intref = refto i ADDRLOCAL p15, i14 NOP # var Generic4 g4_bound = get_g4_bound() CALL_START 0 CALL_FUNCDEF normal, get_g4_bound CALL_GET_RETURN obj16 # g2_int_b = deref g3_intbool.get_a() ADDRLOCAL tp126, obj13 CALL_START 1 CALL_ARG tp126~ CALL_FUNCDEF normal, Generic3_get_a CALL_GET_RETURN tp127 DEREF obj6, tp127~ NOP DISCARD tobj128~ # i = g3_intbool.get_a_elem() ADDRLOCAL tp129, obj13 CALL_START 1 CALL_ARG tp129~ CALL_FUNCDEF normal, Generic3_get_a_elem CALL_GET_RETURN i14 NOP DISCARD t130~ # g3_intbool.set_b(refto g2_bool) ADDRLOCAL tp131, obj13 ADDRLOCAL tp133, obj9 NOP CALL_START 2 CALL_ARG tp131~ CALL_ARG tp133~ CALL_FUNCDEF normal, Generic3_set_b CALL_DISCARD_RETURN DISCARD tp133~ # g3_intbool.set_inner(true) ADDRLOCAL tp134, obj13 CALL_START 2 CALL_ARG tp134~ CALL_ARG 1 CALL_FUNCDEF normal, Generic3_set_inner CALL_DISCARD_RETURN DISCARD tp134~ # ================================================== abi c function get_g4_bound() -> {{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}} ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function get_g4_params( dptr dptr ) -> {{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}},{dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}} VAR arg0 dptr PARAM UNUSED VAR arg1 dptr PARAM VAR p2 dptr VAR obj3 {int,int} ADDR VAR obj4 {dptr} ADDR VAR obj5 {dptr} VAR obj6 {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}} VAR tp11 dptr TEMP VAR tp14 dptr TEMP VAR tp16 dptr TEMP VAR tp18 dptr TEMP VAR tobj19 {dptr} TEMP VAR tobj20 {{dptr},{dptr},{dptr},dptr} TEMP VAR tobj21 {{dptr},{dptr},{dptr},dptr} TEMP VAR tarr22 [2]{{dptr},{dptr},{dptr},dptr} TEMP ebb0: MOVE p2, arg1 LOADGLOBAL obj3, D101 MOVE obj4, 123 ADDRLOCAL tp11, obj3 NOP MOVE obj5, 123 ADDRLOCAL tp14, obj4 NOP ADDRLOCAL tp16, obj4 NOP ADDRLOCAL tp18, obj3 NOP MOVE tobj19, 123 MOVE tobj20, 123 MOVE tobj21, 123 MOVE tarr22, 123 MOVE obj6, 123 JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function Generic3_get_a( dptr ) -> dptr VAR arg0 dptr PARAM VAR tp1 dptr TEMP ebb0: LOADELEM tp1, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, arg0, 0, 0 RETURN_ARG tp1~ # ================================================== abi c function Generic3_get_a_elem( dptr ) -> dptr VAR arg0 dptr PARAM VAR tp1 dptr TEMP VAR tp2 dptr TEMP ebb0: LOADELEM tp1, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, arg0, 0, 0 LOADELEM tp2, {dptr}, tp1~, 0, 0 RETURN_ARG tp2~ # ================================================== abi c function Generic3_set_b( dptr dptr ) -> void VAR arg0 dptr PARAM VAR arg1 dptr PARAM VAR tp2 dptr TEMP ebb0: # this.b = value ADDRELEM tp2, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, arg0, 0, 1 MOVETOPTR tp2~, arg1 DISCARD tp2~ # ================================================== abi c function Generic3_set_inner( dptr dptr ) -> void VAR arg0 dptr PARAM VAR arg1 dptr PARAM VAR tp2 dptr TEMP VAR tp3 dptr TEMP VAR tp4 dptr TEMP VAR tp5 dptr TEMP ebb0: # this.arr[1].same.elem = inner ADDRELEM tp2, {dptr,dptr,[2]{{dptr},{dptr},{dptr},dptr}}, arg0, 0, 2 ADDRELEM tp3, [2]{{dptr},{dptr},{dptr},dptr}, tp2~, 1, 0 # FIXME should be LOADELEM ADDRELEM tp4, {{dptr},{dptr},{dptr},dptr}, tp3~, 0, 0 # FIXME should be LOADELEM ADDRELEM tp5, {dptr}, tp4~, 0, 0 MOVETOPTR tp5~, arg1 DISCARD tp5~ # ================================================== abi c function retflow_none1() -> void ebb0: # ================================================== abi c function retflow_none2( bool ) -> void VAR arg0 bool PARAM ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: JUMP ebb3 ebb2: ebb3: # ================================================== abi c function retflow_simple1() -> bool ebb0: RETURN_ARG 1 # ================================================== abi c function retflow_simple2( bool ) -> bool VAR arg0 bool PARAM ebb0: CONDJUMP ebb2, arg0, z, _ ebb1: JUMP ebb3 ebb2: ebb3: RETURN_ARG 1 # ================================================== abi c function retflow_nested() -> bool ebb0: RETURN_ARG 1 # ================================================== abi c function retflow_if( int ) -> bool VAR arg0 int PARAM VAR t1 bool TEMP ebb0: EQ t1, arg0, 1 CONDJUMP ebb2, t1~, z, _ ebb1: RETURN_ARG 1 ebb2: RETURN_ARG 0 ebb3: # ================================================== abi c function retflow_elseif( int ) -> bool VAR arg0 int PARAM VAR t1 bool TEMP VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP VAR t7 bool TEMP ebb0: EQ t1, arg0, 1 CONDJUMP ebb2, t1~, z, _ ebb1: RETURN_ARG 1 ebb2: LT t2, arg0, -100 CONDJUMP ebb5, t2~, z, _ JUMP ebb4 ebb3: ebb4: EQ t3, arg0, -300 RETURN_ARG t3~ ebb5: LT t4, arg0, -10 CONDJUMP ebb8, t4~, z, _ JUMP ebb7 ebb6: JUMP ebb3 ebb7: EQ t5, arg0, -30 RETURN_ARG t5~ ebb8: NOP CONDJUMP ebb11, arg0, gez, _ JUMP ebb10 ebb9: JUMP ebb6 ebb10: EQ t7, arg0, -3 RETURN_ARG t7~ ebb11: RETURN_ARG 0 ebb12: JUMP ebb9 # ================================================== abi c function retflow_elseif_nested( int ) -> bool VAR arg0 int PARAM VAR t1 bool TEMP VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t6 bool TEMP VAR t7 bool TEMP ebb0: LT t1, arg0, 100 CONDJUMP ebb2, t1~, z, _ ebb1: EQ t2, arg0, 1 CONDJUMP ebb5, t2~, z, _ JUMP ebb4 ebb2: EQ t7, arg0, 101 CONDJUMP ebb14, t7~, z, _ JUMP ebb13 ebb3: ebb4: RETURN_ARG 1 ebb5: LT t3, arg0, -10 CONDJUMP ebb8, t3~, z, _ JUMP ebb7 ebb6: JUMP ebb3 ebb7: EQ t4, arg0, -30 RETURN_ARG t4~ ebb8: NOP CONDJUMP ebb11, arg0, gez, _ JUMP ebb10 ebb9: JUMP ebb6 ebb10: EQ t6, arg0, -3 RETURN_ARG t6~ ebb11: RETURN_ARG 0 ebb12: JUMP ebb9 ebb13: RETURN_ARG 1 ebb14: JUMP ebb17 ebb15: JUMP ebb3 ebb16: NOP JUMP ebb18 ebb17: JUMP ebb16 ebb18: RETURN_ARG 0 # ================================================== abi c function retflow_if_goto1( int ) -> int VAR arg0 int PARAM VAR t1 bool TEMP VAR t2 bool TEMP ebb0: EQ t1, arg0, 1 CONDJUMP ebb2, t1~, z, _ ebb1: RETURN_ARG 11 ebb2: EQ t2, arg0, 2 CONDJUMP ebb5, t2~, z, _ JUMP ebb4 ebb3: JUMP ebb7 ebb4: JUMP ebb7 ebb5: RETURN_ARG 33 ebb6: JUMP ebb3 ebb7: RETURN_ARG 22 # ================================================== abi c function retflow_if_goto2( int ) -> int VAR arg0 int PARAM VAR t1 bool TEMP VAR t2 bool TEMP ebb0: EQ t1, arg0, 1 CONDJUMP ebb2, t1~, z, _ ebb1: RETURN_ARG 11 ebb2: EQ t2, arg0, 2 CONDJUMP ebb5, t2~, z, _ JUMP ebb4 ebb3: JUMP ebb8 ebb4: JUMP ebb6 ebb5: JUMP ebb7 ebb6: JUMP ebb3 ebb7: JUMP ebb8 ebb8: RETURN_ARG 33 # ================================================== abi c function retflow_goto() -> bool ebb0: ebb1: JUMP ebb1 # ================================================== abi c function retflow_while_endless1() -> bool ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function retflow_while_endless2( int ) -> bool VAR arg0 int PARAM VAR i1 int MUTABLE VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP ebb0: MOVE i1, arg0 JUMP ebb2 ebb1: ebb2: ADD i1, i1~, 1 JUMP ebb17 ebb3: ebb4: JUMP ebb15 ebb5: EQ t3, i1, 20 CONDJUMP ebb8, t3~, z, _ JUMP ebb7 ebb6: JUMP ebb15 ebb7: JUMP ebb17 ebb8: EQ t4, i1, 30 CONDJUMP ebb11, t4~, z, _ JUMP ebb10 ebb9: JUMP ebb6 ebb10: JUMP ebb16 ebb11: GT t5, i1, 100 CONDJUMP ebb14, t5~, z, _ JUMP ebb13 ebb12: JUMP ebb9 ebb13: JUMP ebb16 ebb14: JUMP ebb12 ebb15: JUMP ebb2 ebb16: MOVE i1, 0 JUMP ebb14 ebb17: EQ t2, i1, 10 CONDJUMP ebb5, t2~, z, _ JUMP ebb4 # ================================================== abi c function retflow_while_not_endless1( int ) -> bool VAR arg0 int PARAM VAR i1 int MUTABLE VAR t2 bool TEMP VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP ebb0: MOVE i1, arg0 JUMP ebb2 ebb1: ebb2: ADD i1, i1~, 1 JUMP ebb18 ebb3: JUMP ebb15 ebb4: JUMP ebb16 ebb5: EQ t3, i1, 20 CONDJUMP ebb8, t3~, z, _ JUMP ebb7 ebb6: JUMP ebb16 ebb7: JUMP ebb18 ebb8: EQ t4, i1, 30 CONDJUMP ebb11, t4~, z, _ JUMP ebb10 ebb9: JUMP ebb6 ebb10: JUMP ebb17 ebb11: GT t5, i1, 100 CONDJUMP ebb14, t5~, z, _ JUMP ebb13 ebb12: JUMP ebb9 ebb13: JUMP ebb17 ebb14: JUMP ebb12 ebb15: RETURN_ARG 1 ebb16: JUMP ebb2 ebb17: MOVE i1, 0 JUMP ebb15 ebb18: EQ t2, i1, 10 CONDJUMP ebb5, t2~, z, _ JUMP ebb4 # ================================================== abi c function retflow_while_not_endless2( int ) -> bool VAR arg0 int PARAM VAR i1 int MUTABLE VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP VAR t6 bool TEMP ebb0: MOVE i1, arg0 NOP CONDJUMP ebb2, arg0, nz, _ ebb1: JUMP ebb20 ebb2: JUMP ebb4 ebb3: ebb4: ADD i1, i1~, 1 JUMP ebb19 ebb5: ebb6: JUMP ebb17 ebb7: EQ t4, i1, 20 CONDJUMP ebb10, t4~, z, _ JUMP ebb9 ebb8: JUMP ebb17 ebb9: JUMP ebb19 ebb10: EQ t5, i1, 30 CONDJUMP ebb13, t5~, z, _ JUMP ebb12 ebb11: JUMP ebb8 ebb12: JUMP ebb18 ebb13: GT t6, i1, 100 CONDJUMP ebb16, t6~, z, _ JUMP ebb15 ebb14: JUMP ebb11 ebb15: JUMP ebb18 ebb16: JUMP ebb14 ebb17: JUMP ebb4 ebb18: MOVE i1, 0 JUMP ebb20 ebb19: EQ t3, i1, 10 CONDJUMP ebb7, t3~, z, _ JUMP ebb6 ebb20: RETURN_ARG 0 # ================================================== abi c function retflow_dowhile_endless() -> bool ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function retflow_dowhile_not_endless() -> bool ebb0: JUMP ebb2 ebb1: NOP JUMP ebb3 ebb2: JUMP ebb1 ebb3: RETURN_ARG 1 # ================================================== abi c function retflow_switch1( int ) -> int VAR arg0 int PARAM VAR t1 int TEMP ebb0: MOVE t1, arg0 COMPAREJUMP ebb2, t1~, 1, z, unlikely JUMP ebb1 ebb1: RETURN_ARG 99 ebb2: RETURN_ARG 11 ebb3: # ================================================== abi c function retflow_switch2( int ) -> int VAR arg0 int PARAM VAR t1 int TEMP ebb0: MOVE t1, arg0 COMPAREJUMP ebb2, t1~, 3, z, unlikely COMPAREJUMP ebb3, t1~, 2, z, unlikely COMPAREJUMP ebb4, t1~, 1, z, unlikely JUMP ebb1 ebb1: RETURN_ARG 99 ebb2: RETURN_ARG 33 ebb3: RETURN_ARG 22 ebb4: RETURN_ARG 11 ebb5: # ================================================== abi c function retflow_switch3( int int ) -> int VAR arg0 int PARAM VAR arg1 int PARAM VAR t3 int TEMP VAR t5 int TEMP VAR t6 int TEMP ebb0: NOP CONDJUMP ebb2, arg0, gez, _ ebb1: MOVE t3, arg1 COMPAREJUMP ebb5, t3~, 1, z, unlikely JUMP ebb4 ebb2: NOP CONDJUMP ebb8, arg0, lez, _ JUMP ebb7 ebb3: ebb4: RETURN_ARG 9 ebb5: RETURN_ARG 1 ebb6: JUMP ebb3 ebb7: MOVE t5, arg1 COMPAREJUMP ebb11, t5~, 2, z, unlikely COMPAREJUMP ebb12, t5~, 1, z, unlikely JUMP ebb10 ebb8: MOVE t6, arg1 COMPAREJUMP ebb15, t6~, 3, z, unlikely COMPAREJUMP ebb16, t6~, 2, z, unlikely COMPAREJUMP ebb17, t6~, 1, z, unlikely JUMP ebb14 ebb9: JUMP ebb3 ebb10: RETURN_ARG 99 ebb11: RETURN_ARG 22 ebb12: RETURN_ARG 11 ebb13: JUMP ebb9 ebb14: RETURN_ARG 999 ebb15: RETURN_ARG 333 ebb16: RETURN_ARG 222 ebb17: RETURN_ARG 111 ebb18: JUMP ebb9 # ================================================== abi c function retflow_gototarget_simple( int ) -> bool VAR arg0 int PARAM VAR t1 bool TEMP ebb0: EQ t1, arg0, 1 CONDJUMP ebb2, t1~, z, _ ebb1: JUMP ebb3 ebb2: RETURN_ARG 1 ebb3: RETURN_ARG 0 # ================================================== abi c function retflow_gototarget_loop( int ) -> bool VAR arg0 int PARAM VAR t1 bool TEMP ebb0: EQ t1, arg0, 1 CONDJUMP ebb2, t1~, z, _ ebb1: JUMP ebb6 ebb2: RETURN_ARG 1 ebb3: ebb4: JUMP ebb6 ebb5: ebb6: RETURN_ARG 0 # ================================================== abi c function test_statements( int ) -> int VAR arg0 int PARAM VAR i1 int MUTABLE VAR i2 int VAR t3 bool TEMP VAR t4 bool TEMP VAR t5 bool TEMP VAR t6 bool TEMP ebb0: MOVE i1, arg0 MOVE i2, 0 EQ t3, i1, 2 LOR t4, 0, t3~ CONDJUMP ebb2, t4~, z, _ ebb1: MOVE i1, -1 JUMP ebb6 ebb2: EQ t5, i1, 3 LOR t6, 0, t5~ CONDJUMP ebb9, t6~, z, _ JUMP ebb8 ebb3: ADD i1, i1~, 32 RETURN_ARG i1 ebb4: NOP ebb5: MOVE i1, -2 JUMP ebb4 ebb6: MOVE i1, -3 JUMP ebb7 ebb7: JUMP ebb3 ebb8: RETURN_ARG -4 ebb9: ADD i1, i1~, 2 JUMP ebb12 ebb10: JUMP ebb3 ebb11: NOP JUMP ebb13 ebb12: ADD i1, i1~, 4 JUMP ebb16 ebb13: ADD i1, i1~, 16 JUMP ebb10 ebb14: NOP ebb15: TRAP ebb16: ebb17: JUMP ebb11 ebb18: ebb19: ebb20: ADD i1, i1~, 256 ebb21: ADD i1, i1~, 8 JUMP ebb17 ebb22: ebb23: ebb24: ebb25: ebb26: ebb27: ebb28: ebb29: ebb30: ebb31: ebb32: # ================================================== abi c function test_empty_if( int ) -> int VAR arg0 int PARAM ebb0: NOP CONDJUMP ebb2, arg0, gez, _ ebb1: ebb2: RETURN_ARG 999 # ================================================== abi c function typecompat_builtins() -> void VAR i0 int MUTABLE VAR i1 i8 MUTABLE VAR i2 i16 MUTABLE VAR i3 i32 MUTABLE VAR i4 i64 MUTABLE VAR u5 uint MUTABLE VAR u6 u8 MUTABLE VAR u7 u16 MUTABLE VAR u8 u32 MUTABLE VAR u9 u64 MUTABLE VAR u10 uint MUTABLE VAR u11 u8 MUTABLE VAR u12 u16 MUTABLE VAR u13 u32 MUTABLE VAR u14 u64 MUTABLE VAR len15 usize MUTABLE VAR slen16 ssize MUTABLE VAR u17 u64 MUTABLE ebb0: MOVE i0, 123 MOVE i1, 123 MOVE i2, 123 MOVE i3, 123 MOVE i4, 123 MOVE u5, 123 MOVE u6, 123 MOVE u7, 123 MOVE u8, 123 MOVE u9, 123 MOVE u10, 123 MOVE u11, 123 MOVE u12, 123 MOVE u13, 123 MOVE u14, 123 MOVE len15, 123 MOVE slen16, 123 MOVE u17, 123 NOP MOVE i0, i1 MOVE i0, i2 MOVE i0, i3 MOVE i0, u6 MOVE i0, u7 MOVE i0, u11 MOVE i0, u12 NOP MOVE i2, i1 NOP MOVE i2, u6 MOVE i3, i0 MOVE i3, i1 MOVE i3, i2 NOP MOVE i3, u6 MOVE i3, u7 MOVE i3, u11 MOVE i3, u12 MOVE i4, i0 MOVE i4, i1 MOVE i4, i2 MOVE i4, i3 NOP MOVE i4, u6 MOVE i4, u7 MOVE i4, u8 MOVE i4, u11 MOVE i4, u12 MOVE i4, u13 NOP MOVE u6, u11 MOVE u7, u6 NOP MOVE u7, u11 MOVE u7, u12 MOVE u8, u5 MOVE u8, u6 MOVE u8, u7 NOP MOVE u8, u11 MOVE u8, u12 MOVE u8, u13 MOVE u9, u5 MOVE u9, u6 MOVE u9, u7 MOVE u9, u8 NOP MOVE u9, u11 MOVE u9, u12 MOVE u9, u13 MOVE u9, u14 MOVE u11, u6 NOP MOVE u10, u5 MOVE u10, u5 NOP MOVE u10, u6 MOVE u10, u8 MOVE u10, u13 MOVE u14, u9 NOP MOVE len15, u5 MOVE len15, u6 MOVE len15, u7 MOVE len15, u8 NOP MOVE slen16, i0 MOVE slen16, i1 MOVE slen16, i2 MOVE slen16, i3 MOVE slen16, u6 MOVE slen16, u7 NOP MOVE u17, i0 MOVE u17, i1 MOVE u17, i2 MOVE u17, i3 MOVE u17, u6 MOVE u17, u7 NOP # ================================================== abi c function typecompat_builtins_stack() -> void VAR i0 int MUTABLE VAR i1 int MUTABLE VAR i2 int MUTABLE VAR i3 int MUTABLE VAR i4 int MUTABLE VAR i5 int MUTABLE VAR i6 int MUTABLE VAR i7 int MUTABLE VAR i8 int MUTABLE VAR i9 int MUTABLE VAR i10 int MUTABLE VAR i11 int MUTABLE VAR i12 int MUTABLE VAR i13 int MUTABLE VAR i14 int MUTABLE VAR i15 int MUTABLE VAR i16 int MUTABLE VAR i17 int MUTABLE VAR i18 int MUTABLE VAR i19 int MUTABLE VAR i20 int MUTABLE VAR i21 int MUTABLE VAR i22 int MUTABLE VAR i23 int MUTABLE VAR i24 int MUTABLE VAR i25 int MUTABLE VAR i26 int MUTABLE VAR i27 int MUTABLE VAR i28 int MUTABLE VAR i29 int MUTABLE VAR i30 int MUTABLE VAR i31 int MUTABLE VAR i32 int MUTABLE VAR i33 int MUTABLE VAR i34 int MUTABLE VAR i35 int MUTABLE VAR i36 int MUTABLE VAR i37 int MUTABLE VAR i38 int MUTABLE VAR i39 int MUTABLE VAR i40 int MUTABLE VAR i41 i8 MUTABLE VAR i42 i16 MUTABLE VAR i43 i32 MUTABLE VAR i44 i64 MUTABLE VAR u45 uint MUTABLE VAR u46 u8 MUTABLE VAR u47 u16 MUTABLE VAR u48 u32 MUTABLE VAR u49 u64 MUTABLE VAR u50 uint MUTABLE VAR u51 u8 MUTABLE VAR u52 u16 MUTABLE VAR u53 u32 MUTABLE VAR u54 u64 MUTABLE VAR len55 usize MUTABLE VAR slen56 ssize MUTABLE VAR u57 u64 MUTABLE VAR i58 int ebb0: MOVE i0, 0 MOVE i1, 1 MOVE i2, 2 MOVE i3, 3 MOVE i4, 4 MOVE i5, 5 MOVE i6, 6 MOVE i7, 7 MOVE i8, 8 MOVE i9, 9 MOVE i10, 10 MOVE i11, 11 MOVE i12, 12 MOVE i13, 13 MOVE i14, 14 MOVE i15, 15 MOVE i16, 16 MOVE i17, 17 MOVE i18, 18 MOVE i19, 19 MOVE i20, 20 MOVE i21, 21 MOVE i22, 22 MOVE i23, 23 MOVE i24, 24 MOVE i25, 25 MOVE i26, 26 MOVE i27, 27 MOVE i28, 28 MOVE i29, 29 MOVE i30, 30 MOVE i31, 31 MOVE i32, 32 MOVE i33, 33 MOVE i34, 34 MOVE i35, 35 MOVE i36, 36 MOVE i37, 37 MOVE i38, 38 MOVE i39, 39 MOVE i40, 123 MOVE i41, 123 MOVE i42, 123 MOVE i43, 123 MOVE i44, 123 MOVE u45, 123 MOVE u46, 123 MOVE u47, 123 MOVE u48, 123 MOVE u49, 123 MOVE u50, 123 MOVE u51, 123 MOVE u52, 123 MOVE u53, 123 MOVE u54, 123 MOVE len55, 123 MOVE slen56, 123 MOVE u57, 123 MOVE i58, i40 MOVE i40, i41 MOVE i40, i42 MOVE i40, i43 MOVE i40, u46 MOVE i40, u47 MOVE i40, u51 MOVE i40, u52 NOP MOVE i42, i41 NOP MOVE i42, u46 MOVE i43, i40 MOVE i43, i41 MOVE i43, i42 NOP MOVE i43, u46 MOVE i43, u47 MOVE i43, u51 MOVE i43, u52 MOVE i44, i40 MOVE i44, i41 MOVE i44, i42 MOVE i44, i43 NOP MOVE i44, u46 MOVE i44, u47 MOVE i44, u48 MOVE i44, u51 MOVE i44, u52 MOVE i44, u53 NOP MOVE u46, u51 MOVE u47, u46 NOP MOVE u47, u51 MOVE u47, u52 MOVE u48, u45 MOVE u48, u46 MOVE u48, u47 NOP MOVE u48, u51 MOVE u48, u52 MOVE u48, u53 MOVE u49, u45 MOVE u49, u46 MOVE u49, u47 MOVE u49, u48 NOP MOVE u49, u51 MOVE u49, u52 MOVE u49, u53 MOVE u49, u54 MOVE u51, u46 NOP MOVE u50, u45 MOVE u50, u45 NOP MOVE u50, u46 MOVE u50, u48 MOVE u50, u53 MOVE u54, u49 NOP MOVE len55, u45 MOVE len55, u46 MOVE len55, u47 MOVE len55, u48 NOP MOVE slen56, i40 MOVE slen56, i41 MOVE slen56, i42 MOVE slen56, i43 MOVE slen56, u46 MOVE slen56, u47 NOP MOVE u57, i40 MOVE u57, i41 MOVE u57, i42 MOVE u57, i43 MOVE u57, u46 MOVE u57, u47 NOP # ================================================== abi c function get_ref() -> dptr ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function get_arena() -> dptr ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function get_own() -> dptr ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function take_ref( dptr ) -> void VAR arg0 dptr PARAM UNUSED ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function take_arena( dptr ) -> void VAR arg0 dptr PARAM UNUSED ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function take_own( dptr ) -> void VAR arg0 dptr PARAM UNUSED ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function get_refref() -> dptr ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function take_refref( dptr ) -> void VAR arg0 dptr PARAM UNUSED ebb0: JUMP ebb2 ebb1: ebb2: JUMP ebb2 ebb3: # ================================================== abi c function typecompat_refs() -> void VAR p0 dptr VAR p1 dptr VAR p2 dptr VAR p3 dptr VAR p4 dptr VAR p5 dptr MUTABLE VAR p6 dptr MUTABLE VAR p7 dptr VAR tp8 dptr TEMP VAR tp9 dptr TEMP VAR tp10 dptr TEMP VAR tp11 dptr TEMP VAR tp14 dptr TEMP ebb0: CALL_START 0 CALL_FUNCDEF normal, get_ref CALL_GET_RETURN tp8 CALL_START 1 CALL_ARG tp8~ CALL_FUNCDEF normal, take_ref CALL_DISCARD_RETURN DISCARD tp8~ CALL_START 0 CALL_FUNCDEF normal, get_arena CALL_GET_RETURN tp9 CALL_START 1 CALL_ARG tp9~ CALL_FUNCDEF normal, take_arena CALL_DISCARD_RETURN DISCARD tp9~ CALL_START 0 CALL_FUNCDEF normal, get_own CALL_GET_RETURN tp10 CALL_START 1 CALL_ARG tp10~ CALL_FUNCDEF normal, take_own CALL_DISCARD_RETURN DISCARD tp10~ CALL_START 0 CALL_FUNCDEF normal, get_arena CALL_GET_RETURN tp11 CALL_START 1 CALL_ARG tp11~ CALL_FUNCDEF normal, take_ref CALL_DISCARD_RETURN DISCARD tp11~ CALL_START 0 CALL_FUNCDEF normal, get_own CALL_GET_RETURN p0 CALL_START 1 CALL_ARG p0 CALL_FUNCDEF normal, take_ref CALL_DISCARD_RETURN CALL_START 1 CALL_ARG p0 CALL_FUNCDEF normal, take_own CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, get_refref CALL_GET_RETURN p1 CALL_START 1 CALL_ARG p1 CALL_FUNCDEF normal, take_refref CALL_DISCARD_RETURN CALL_START 0 CALL_FUNCDEF normal, get_refref CALL_GET_RETURN tp14 CALL_START 1 CALL_ARG tp14~ CALL_FUNCDEF normal, take_refref CALL_DISCARD_RETURN DISCARD tp14~ CALL_START 0 CALL_FUNCDEF normal, get_ref CALL_GET_RETURN p2 CALL_START 0 CALL_FUNCDEF normal, get_ref CALL_GET_RETURN p3 CALL_START 0 CALL_FUNCDEF normal, get_refref CALL_GET_RETURN p4 CALL_START 0 CALL_FUNCDEF normal, get_ref CALL_GET_RETURN p5 CALL_START 0 CALL_FUNCDEF normal, get_refref CALL_GET_RETURN p6 CALL_START 0 CALL_FUNCDEF normal, make_some_thing CALL_GET_RETURN p7 CALL_START 1 CALL_ARG p7 CALL_FUNCDEF normal, free_some_thing CALL_DISCARD_RETURN # ================================================== abi c function typecompat_reftargets() -> void VAR u0 u8 ADDR VAR p1 dptr VAR i2 int ebb0: MOVE u0, 123 ADDRLOCAL p1, u0 NOP DEREF i2, p1