diff --git a/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse.yul b/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse.yul index 96637da89fc1..515765ad268b 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse.yul @@ -1,10 +1,23 @@ { function f(a, b, c) -> x { pop(address()) sstore(a, c) pop(callvalue()) x := b } + pop(f(0, 0, 0)) } // ==== // stackOptimization: true // ---- -// /* "":0:88 */ +// /* "":95:105 */ +// tag_2 +// /* "":103:104 */ +// 0x00 +// /* "":95:105 */ +// dup1 +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":91:106 */ +// pop +// /* "":0:108 */ // stop // /* "":6:86 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse_without_retparams.yul b/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse_without_retparams.yul index b5cc611879ec..09ce0b84a2b2 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse_without_retparams.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_argument_reuse_without_retparams.yul @@ -3,12 +3,23 @@ mstore(0x80, x) if calldataload(0) { sstore(y, y) } } + + f(0, 0) } // ==== -// stackOptimization: true // EVMVersion: >=shanghai +// stackOptimization: true // ---- -// /* "":0:88 */ +// /* "":90:97 */ +// tag_2 +// /* "":95:96 */ +// 0x00 +// /* "":90:97 */ +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":0:99 */ // stop // /* "":4:86 */ // tag_1: @@ -21,18 +32,18 @@ // /* "":50:65 */ // calldataload // /* "":47:82 */ -// tag_2 +// tag_3 // jumpi // /* "":21:86 */ -// tag_3: +// tag_4: // /* "":4:86 */ // pop // jump // out // /* "":66:82 */ -// tag_2: +// tag_3: // /* "":68:80 */ // dup1 // sstore // /* "":66:82 */ // 0x00 -// jump(tag_3) +// jump(tag_4) diff --git a/test/libyul/evmCodeTransform/stackReuse/function_many_arguments.yul b/test/libyul/evmCodeTransform/stackReuse/function_many_arguments.yul index 17ccdd3caf39..e78cda9cba17 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_many_arguments.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_many_arguments.yul @@ -21,11 +21,42 @@ mstore(0x0340, a19) x := a20 } + + pop(f(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) } // ==== // stackOptimization: true // ---- -// /* "":0:662 */ +// /* "":670:731 */ +// tag_2 +// /* "":729:730 */ +// 0x00 +// /* "":670:731 */ +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":666:732 */ +// pop +// /* "":0:734 */ // stop // /* "":6:660 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_params.yul b/test/libyul/evmCodeTransform/stackReuse/function_params.yul index e8d9bb30cc1b..dda389524edd 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_params.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_params.yul @@ -1,10 +1,21 @@ { function f(a, b) { } + + f(0, 0) } // ==== // stackOptimization: true // ---- -// /* "":0:28 */ +// /* "":32:39 */ +// tag_2 +// /* "":37:38 */ +// 0x00 +// /* "":32:39 */ +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":0:41 */ // stop // /* "":6:26 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams.yul b/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams.yul index 1d157663a56d..bf6ed9f14b6e 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams.yul @@ -4,11 +4,24 @@ // can be reused. { function f(a, b, c, d) -> x, y { } + + let x, y := f(0, 0, 0, 0) } // ==== // stackOptimization: true // ---- -// /* "":210:252 */ +// /* "":268:281 */ +// tag_2 +// /* "":279:280 */ +// 0x00 +// /* "":268:281 */ +// dup1 +// dup1 +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":210:283 */ // stop // /* "":216:250 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams_partly_used.yul b/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams_partly_used.yul index d0fc0506f88c..cf38dc0b4a04 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams_partly_used.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_params_and_retparams_partly_used.yul @@ -1,10 +1,23 @@ { function f(a, b, c, d) -> x, y { b := 3 let s := 9 y := 2 mstore(s, y) } + + let x, y := f(0, 0, 0, 0) } // ==== // stackOptimization: true // ---- -// /* "":0:80 */ +// /* "":97:110 */ +// tag_2 +// /* "":108:109 */ +// 0x00 +// /* "":97:110 */ +// dup1 +// dup1 +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":0:112 */ // stop // /* "":6:78 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam.yul index bee0d3f635d9..eb912cbe2c00 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam.yul @@ -1,10 +1,17 @@ { function f() -> x, y { } + + let x, y := f() } // ==== // stackOptimization: true // ---- -// /* "":0:32 */ +// /* "":49:52 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":0:54 */ // stop // /* "":6:30 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_block.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_block.yul index 5a9e7704e68a..42186ca69dde 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_block.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_block.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(address()) { pop(callvalue()) } } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:65 */ +// /* "":74:77 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":70:78 */ +// pop +// /* "":0:80 */ // stop // /* "":6:63 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_declaration.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_declaration.yul index 97bffac381a1..402555e2d6ed 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_declaration.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_declaration.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(address()) let y := callvalue() } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:65 */ +// /* "":74:77 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":70:78 */ +// pop +// /* "":0:80 */ // stop // /* "":6:63 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_for.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_for.yul index c18fb7c37e50..583173222628 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_for.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_for.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(address()) for { pop(callvalue()) } 0 {} { } } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:78 */ +// /* "":86:89 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":82:90 */ +// pop +// /* "":0:92 */ // stop // /* "":6:76 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_if.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_if.yul index 08dda5a3bc28..6a53eab99108 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_if.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_if.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(address()) if 1 { pop(callvalue()) } } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:70 */ +// /* "":78:81 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":74:82 */ +// pop +// /* "":0:84 */ // stop // /* "":6:68 */ // tag_1: @@ -19,17 +28,17 @@ // /* "":26:40 */ // pop // /* "":41:66 */ -// tag_2 +// tag_3 // jumpi // /* "":24:68 */ -// tag_3: +// tag_4: // /* "":6:68 */ // jump // out // /* "":46:66 */ -// tag_2: +// tag_3: // /* "":52:63 */ // callvalue // /* "":48:64 */ // pop // /* "":46:66 */ -// jump(tag_3) +// jump(tag_4) diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_leave.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_leave.yul index 9ac0c00bf8f2..ecaf79f76f0e 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_leave.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_leave.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(address()) leave pop(callvalue()) } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:67 */ +// /* "":75:78 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":71:79 */ +// pop +// /* "":0:81 */ // stop // /* "":6:65 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_read.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_read.yul index fcc8278e6719..4fe4dcd4e5be 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_read.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_read.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(address()) sstore(0, x) pop(callvalue()) } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:74 */ +// /* "":82:85 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":78:86 */ +// pop +// /* "":0:88 */ // stop // /* "":6:72 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned.yul index 1cc19a464105..977f8c9d638d 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned.yul @@ -1,10 +1,19 @@ { function f() -> x { pop(callvalue()) } + + pop(f()) } // ==== // stackOptimization: true // ---- -// /* "":0:46 */ +// /* "":54:57 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":50:58 */ +// pop +// /* "":0:60 */ // stop // /* "":6:44 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned_multiple.yul b/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned_multiple.yul index e44e3b43729b..7d3d9605703d 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned_multiple.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_retparam_unassigned_multiple.yul @@ -1,10 +1,17 @@ { function f() -> x, y, z { pop(callvalue()) } + + let x, y, z := f() } // ==== // stackOptimization: true // ---- -// /* "":0:52 */ +// /* "":71:74 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":0:76 */ // stop // /* "":6:50 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/stackReuse/function_trivial.yul b/test/libyul/evmCodeTransform/stackReuse/function_trivial.yul index 3d6286efdb07..ad5098af7f6d 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_trivial.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_trivial.yul @@ -1,11 +1,18 @@ { - function f() { } + function f() { } + + f() } // ==== // stackOptimization: true // ---- -// /* "":0:22 */ +// /* "":28:31 */ +// tag_2 +// tag_1 +// jump // in +// tag_2: +// /* "":0:33 */ // stop -// /* "":4:20 */ +// /* "":6:22 */ // tag_1: // jump // out diff --git a/test/libyul/evmCodeTransform/stackReuse/function_with_body_embedded.yul b/test/libyul/evmCodeTransform/stackReuse/function_with_body_embedded.yul index f8480bc91ea8..20651dd49e48 100644 --- a/test/libyul/evmCodeTransform/stackReuse/function_with_body_embedded.yul +++ b/test/libyul/evmCodeTransform/stackReuse/function_with_body_embedded.yul @@ -5,6 +5,8 @@ let x := a a := 3 t := a } b := 7 + + pop(f(0, 0)) } // ==== // stackOptimization: true @@ -15,7 +17,19 @@ // pop // /* "":182:183 */ // 0x07 -// /* "":0:185 */ +// /* "":193:200 */ +// pop +// tag_2 +// /* "":198:199 */ +// 0x00 +// /* "":193:200 */ +// dup1 +// tag_1 +// jump // in +// tag_2: +// /* "":189:201 */ +// pop +// /* "":0:203 */ // stop // /* "":21:172 */ // tag_1: diff --git a/test/libyul/evmCodeTransform/unassigned_return_variable.yul b/test/libyul/evmCodeTransform/unassigned_return_variable.yul index 666fefe1aa64..e0ff7eddf5f9 100644 --- a/test/libyul/evmCodeTransform/unassigned_return_variable.yul +++ b/test/libyul/evmCodeTransform/unassigned_return_variable.yul @@ -3,12 +3,18 @@ function g(b,s) -> y { y := g(b, g(y, s)) } + + pop(g(0,0)) } // ==== // stackOptimization: true // ---- -// /* "":0:111 */ -// stop +// /* "":121:122 */ +// 0x00 +// /* "":117:123 */ +// dup1 +// tag_1 +// jump // in // /* "":60:109 */ // tag_1: // pop diff --git a/test/libyul/objectCompiler/eof/prune_unreachable_function_non_returning.yul b/test/libyul/objectCompiler/eof/prune_unreachable_function_non_returning.yul index c1ed84ca4249..f4792619f185 100644 --- a/test/libyul/objectCompiler/eof/prune_unreachable_function_non_returning.yul +++ b/test/libyul/objectCompiler/eof/prune_unreachable_function_non_returning.yul @@ -24,6 +24,6 @@ object "Contract" { // dup1 // revert // } -// Bytecode: ef000101000802000200030003040000000080ffff0080ffffe500015f80fd -// Opcodes: 0xEF STOP ADD ADD STOP ADDMOD MUL STOP MUL STOP SUB STOP SUB DIV STOP STOP STOP STOP DUP1 SELFDESTRUCT SELFDESTRUCT STOP DUP1 SELFDESTRUCT SELFDESTRUCT JUMPF 0x1 PUSH0 DUP1 REVERT +// Bytecode: ef000101000802000200030003040000000080000000800002e500015f80fd +// Opcodes: 0xEF STOP ADD ADD STOP ADDMOD MUL STOP MUL STOP SUB STOP SUB DIV STOP STOP STOP STOP DUP1 STOP STOP STOP DUP1 STOP MUL JUMPF 0x1 PUSH0 DUP1 REVERT // SourceMappings: 53:3:0:i:0124:1:0:-:0;114:12; diff --git a/test/libyul/objectCompiler/eof/prune_unreachable_function_recursion.yul b/test/libyul/objectCompiler/eof/prune_unreachable_function_recursion.yul index f3869c9ad48c..0276b4cad5e9 100644 --- a/test/libyul/objectCompiler/eof/prune_unreachable_function_recursion.yul +++ b/test/libyul/objectCompiler/eof/prune_unreachable_function_recursion.yul @@ -9,7 +9,6 @@ object "Contract" { } // ==== -// EVMVersion: >=shanghai // bytecodeFormat: >=EOFv1 // optimizationPreset: none // ---- @@ -21,6 +20,6 @@ object "Contract" { // /* "source":114:117 */ // jumpf{code_section_1} // } -// Bytecode: ef000101000802000200030003040000000080ffff0080ffffe50001e50001 -// Opcodes: 0xEF STOP ADD ADD STOP ADDMOD MUL STOP MUL STOP SUB STOP SUB DIV STOP STOP STOP STOP DUP1 SELFDESTRUCT SELFDESTRUCT STOP DUP1 SELFDESTRUCT SELFDESTRUCT JUMPF 0x1 JUMPF 0x1 +// Bytecode: ef000101000802000200030003040000000080000000800000e50001e50001 +// Opcodes: 0xEF STOP ADD ADD STOP ADDMOD MUL STOP MUL STOP SUB STOP SUB DIV STOP STOP STOP STOP DUP1 STOP STOP STOP DUP1 STOP STOP JUMPF 0x1 JUMPF 0x1 // SourceMappings: 53:3:0:i:0114:3:0:i:0 diff --git a/test/libyul/objectCompiler/eof/prune_unreferenced_function.yul b/test/libyul/objectCompiler/eof/prune_unreferenced_function.yul index 610c9a4580cd..8cbb294cda49 100644 --- a/test/libyul/objectCompiler/eof/prune_unreferenced_function.yul +++ b/test/libyul/objectCompiler/eof/prune_unreferenced_function.yul @@ -28,6 +28,6 @@ object "Contract" { // /* "source":55:92 */ // retf // } -// Bytecode: ef000101000802000200040005040000000080ffff0000ffffe300010060025f52e4 -// Opcodes: 0xEF STOP ADD ADD STOP ADDMOD MUL STOP MUL STOP DIV STOP SDIV DIV STOP STOP STOP STOP DUP1 SELFDESTRUCT SELFDESTRUCT STOP STOP SELFDESTRUCT SELFDESTRUCT CALLF 0x1 STOP PUSH1 0x2 PUSH0 MSTORE RETF +// Bytecode: ef000101000802000200040005040000000080000000000002e300010060025f52e4 +// Opcodes: 0xEF STOP ADD ADD STOP ADDMOD MUL STOP MUL STOP DIV STOP SDIV DIV STOP STOP STOP STOP DUP1 STOP STOP STOP STOP STOP MUL CALLF 0x1 STOP PUSH1 0x2 PUSH0 MSTORE RETF // SourceMappings: 41:3:0:i:0;29:69::-88:1:0:-:0;85;78:12;55:37::o diff --git a/test/libyul/objectCompiler/leading_and_trailing_dots.yul b/test/libyul/objectCompiler/leading_and_trailing_dots.yul index 9d32cadc0cd7..ddacd8b45dde 100644 --- a/test/libyul/objectCompiler/leading_and_trailing_dots.yul +++ b/test/libyul/objectCompiler/leading_and_trailing_dots.yul @@ -25,20 +25,6 @@ // /* "source":134:138 */ // tag_1 // jump // in -// /* "source":149:181 */ -// tag_2: -// /* "source":177:178 */ -// 0x00 -// /* "source":175:179 */ -// tag_2 -// jump // in -// /* "source":190:222 */ -// tag_3: -// /* "source":218:219 */ -// 0x00 -// /* "source":216:220 */ -// tag_3 -// jump // in -// Bytecode: 60025b5f6002565b5f6007565b5f600c56 -// Opcodes: PUSH1 0x2 JUMPDEST PUSH0 PUSH1 0x2 JUMP JUMPDEST PUSH0 PUSH1 0x7 JUMP JUMPDEST PUSH0 PUSH1 0xC JUMP -// SourceMappings: 53:1:0:-:0;108:32;136:1;134:4;:::i;149:32::-;177:1;175:4;:::i;190:32::-;218:1;216:4;:::i +// Bytecode: 60025b5f600256 +// Opcodes: PUSH1 0x2 JUMPDEST PUSH0 PUSH1 0x2 JUMP +// SourceMappings: 53:1:0:-:0;108:32;136:1;134:4;:::i diff --git a/test/libyul/yulControlFlowGraph/function.yul b/test/libyul/yulControlFlowGraph/function.yul index 90c4b380e48c..f65c7505cb9d 100644 --- a/test/libyul/yulControlFlowGraph/function.yul +++ b/test/libyul/yulControlFlowGraph/function.yul @@ -44,30 +44,22 @@ // Block1Exit [label="FunctionReturn[f]"]; // Block1 -> Block1Exit; // -// FunctionEntry_g_2 [label="function g()"]; -// FunctionEntry_g_2 -> Block2; +// FunctionEntry_h_2 [label="function h(x)"]; +// FunctionEntry_h_2 -> Block2; // Block2 [label="\ -// sstore: [ 0x0101 0x01 ] => [ ]\l\ -// "]; -// Block2Exit [label="FunctionReturn[g]"]; -// Block2 -> Block2Exit; -// -// FunctionEntry_h_3 [label="function h(x)"]; -// FunctionEntry_h_3 -> Block3; -// Block3 [label="\ // f: [ RET[f] 0x00 x ] => [ TMP[f, 0] ]\l\ // h: [ TMP[f, 0] ] => [ ]\l\ // "]; -// Block3Exit [label="Terminated"]; -// Block3 -> Block3Exit; +// Block2Exit [label="Terminated"]; +// Block2 -> Block2Exit; // -// FunctionEntry_i_4 [label="function i() -> v, w"]; -// FunctionEntry_i_4 -> Block4; -// Block4 [label="\ +// FunctionEntry_i_3 [label="function i() -> v, w"]; +// FunctionEntry_i_3 -> Block3; +// Block3 [label="\ // Assignment(v): [ 0x0202 ] => [ v ]\l\ // Assignment(w): [ 0x0303 ] => [ w ]\l\ // "]; -// Block4Exit [label="FunctionReturn[i]"]; -// Block4 -> Block4Exit; +// Block3Exit [label="FunctionReturn[i]"]; +// Block3 -> Block3Exit; // // } diff --git a/test/libyul/yulStackLayout/function.yul b/test/libyul/yulStackLayout/function.yul index ccf97422f44f..337d9bea93e0 100644 --- a/test/libyul/yulStackLayout/function.yul +++ b/test/libyul/yulStackLayout/function.yul @@ -17,6 +17,7 @@ let x, y := i() h(x) h(y) + g() } // ---- // digraph CFG { @@ -63,23 +64,10 @@ // Block1Exit [label="FunctionReturn[f]"]; // Block1 -> Block1Exit; // -// FunctionEntry_g [label="function g()\l\ -// [ RET ]"]; -// FunctionEntry_g -> Block2; -// Block2 [label="\ -// [ RET ]\l\ -// [ RET 0x0101 0x01 ]\l\ -// sstore\l\ -// [ RET ]\l\ -// [ RET ]\l\ -// "]; -// Block2Exit [label="FunctionReturn[g]"]; -// Block2 -> Block2Exit; -// // FunctionEntry_h [label="function h(x)\l\ // [ RET x ]"]; -// FunctionEntry_h -> Block3; -// Block3 [label="\ +// FunctionEntry_h -> Block2; +// Block2 [label="\ // [ RET[f] 0x00 x ]\l\ // [ RET[f] 0x00 x ]\l\ // f\l\ @@ -89,13 +77,13 @@ // [ ]\l\ // [ ]\l\ // "]; -// Block3Exit [label="Terminated"]; -// Block3 -> Block3Exit; +// Block2Exit [label="Terminated"]; +// Block2 -> Block2Exit; // // FunctionEntry_i [label="function i() -> v, w\l\ // [ RET ]"]; -// FunctionEntry_i -> Block4; -// Block4 [label="\ +// FunctionEntry_i -> Block3; +// Block3 [label="\ // [ RET ]\l\ // [ RET 0x0202 ]\l\ // Assignment(v)\l\ @@ -105,7 +93,7 @@ // [ v RET w ]\l\ // [ v w RET ]\l\ // "]; -// Block4Exit [label="FunctionReturn[i]"]; -// Block4 -> Block4Exit; +// Block3Exit [label="FunctionReturn[i]"]; +// Block3 -> Block3Exit; // // }