diff --git a/Changelog.md b/Changelog.md index 6fab20f5e..45ef90635 100644 --- a/Changelog.md +++ b/Changelog.md @@ -16,6 +16,7 @@ Bugfixes: * Code Generator: Fix internal compiler error when passing a 32-byte hex literal or a zero literal to ``bytes.concat()`` by disallowing such literals. * Type Checker: Fix internal error and prevent static calls to unimplemented modifiers. * Yul Code Generator: Fix internal compiler error when using a long literal with bitwise negation. + * Yul Code Generator: Fix source location references for calls to builtin functions. ### 0.8.6 (2021-06-22) diff --git a/libyul/backends/evm/EVMCodeTransform.cpp b/libyul/backends/evm/EVMCodeTransform.cpp index d5530c52a..bc41eb9b2 100644 --- a/libyul/backends/evm/EVMCodeTransform.cpp +++ b/libyul/backends/evm/EVMCodeTransform.cpp @@ -237,16 +237,14 @@ void CodeTransform::operator()(FunctionCall const& _call) { yulAssert(m_scope, ""); + m_assembly.setSourceLocation(extractSourceLocationFromDebugData(_call.debugData)); if (BuiltinFunctionForEVM const* builtin = m_dialect.builtin(_call.functionName.name)) builtin->generateCode(_call, m_assembly, m_builtinContext, [&](Expression const& _expression) { visitExpression(_expression); }); else { - m_assembly.setSourceLocation(extractSourceLocationFromDebugData(_call.debugData)); - AbstractAssembly::LabelID returnLabel(numeric_limits::max()); // only used for evm 1.0 - - returnLabel = m_assembly.newLabelId(); + AbstractAssembly::LabelID returnLabel = m_assembly.newLabelId(); m_assembly.appendLabelReference(returnLabel); Scope::Function* function = nullptr; @@ -320,8 +318,6 @@ void CodeTransform::operator()(If const& _if) void CodeTransform::operator()(Switch const& _switch) { - //@TODO use JUMPV in EVM1.5? - visitExpression(*_switch.expression); int expressionHeight = m_assembly.stackHeight(); map caseBodies; @@ -416,6 +412,8 @@ void CodeTransform::operator()(FunctionDefinition const& _function) subTransform.setupReturnVariablesAndFunctionExit(); subTransform(_function.body); + + m_assembly.setSourceLocation(extractSourceLocationFromDebugData(_function.debugData)); if (!subTransform.m_stackErrors.empty()) { m_assembly.markAsInvalid(); diff --git a/libyul/backends/evm/EVMDialect.cpp b/libyul/backends/evm/EVMDialect.cpp index 90e5b2815..f4176c1b2 100644 --- a/libyul/backends/evm/EVMDialect.cpp +++ b/libyul/backends/evm/EVMDialect.cpp @@ -163,6 +163,7 @@ map createBuiltins(langutil::EVMVersion _evmVe ) { yulAssert(_call.arguments.size() == 1, ""); Expression const& arg = _call.arguments.front(); + _assembly.setSourceLocation(_call.debugData->location); _assembly.appendLinkerSymbol(std::get(arg).value.str()); })); @@ -192,6 +193,7 @@ map createBuiltins(langutil::EVMVersion _evmVe yulAssert(_call.arguments.size() == 1, ""); Expression const& arg = _call.arguments.front(); YulString dataName = std::get(arg).value; + _assembly.setSourceLocation(_call.debugData->location); if (_context.currentObject->name == dataName) _assembly.appendAssemblySize(); else @@ -214,6 +216,7 @@ map createBuiltins(langutil::EVMVersion _evmVe yulAssert(_call.arguments.size() == 1, ""); Expression const& arg = _call.arguments.front(); YulString dataName = std::get(arg).value; + _assembly.setSourceLocation(_call.debugData->location); if (_context.currentObject->name == dataName) _assembly.appendConstant(0); else @@ -276,6 +279,7 @@ map createBuiltins(langutil::EVMVersion _evmVe std::function ) { yulAssert(_call.arguments.size() == 1, ""); + _assembly.setSourceLocation(_call.debugData->location); _assembly.appendImmutable(std::get(_call.arguments.front()).value.str()); } )); @@ -382,6 +386,8 @@ BuiltinFunctionForEVM const* EVMDialect::verbatimFunction(size_t _arguments, siz for (Expression const& arg: _call.arguments | ranges::views::tail | ranges::views::reverse) _visitExpression(arg); Expression const& bytecode = _call.arguments.front(); + + _assembly.setSourceLocation(_call.debugData->location); _assembly.appendVerbatim( asBytes(std::get(bytecode).value.str()), _arguments, diff --git a/test/cmdlineTests/linking_strict_assembly/output b/test/cmdlineTests/linking_strict_assembly/output index 8a58b94e4..cb5e7bf96 100644 --- a/test/cmdlineTests/linking_strict_assembly/output +++ b/test/cmdlineTests/linking_strict_assembly/output @@ -14,6 +14,7 @@ Binary representation: 7312345678901234567890123456789012345678908060005550 Text representation: + /* "linking_strict_assembly/input.yul":44:79 */ linkerSymbol("f919ba91ac99f96129544b80b9516b27a80e376b9dc693819d0b18b7e0395612") /* "linking_strict_assembly/input.yul":98:102 */ dup1 diff --git a/test/cmdlineTests/linking_strict_assembly_no_file_name_in_link_reference/output b/test/cmdlineTests/linking_strict_assembly_no_file_name_in_link_reference/output index 871bacf2e..5d5b87c67 100644 --- a/test/cmdlineTests/linking_strict_assembly_no_file_name_in_link_reference/output +++ b/test/cmdlineTests/linking_strict_assembly_no_file_name_in_link_reference/output @@ -14,6 +14,7 @@ Binary representation: 7312345678901234567890123456789012345678908060005550 Text representation: + /* "linking_strict_assembly_no_file_name_in_link_reference/input.yul":44:61 */ linkerSymbol("8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8") /* "linking_strict_assembly_no_file_name_in_link_reference/input.yul":80:84 */ dup1 diff --git a/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files/output b/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files/output index eb74885ee..521d26bfd 100644 --- a/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files/output +++ b/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files/output @@ -16,8 +16,9 @@ Binary representation: 73111111111111111111111111111111111111111173222222222222222222222222222222222222222281600055806001555050 Text representation: + /* "linking_strict_assembly_same_library_name_different_files/input.yul":45:75 */ linkerSymbol("f3ffc10c396a7cc41ae954b050792839d20947bf73497d30c49a9fda1ea477ec") - /* "linking_strict_assembly_same_library_name_different_files/input.yul":32:75 */ + /* "linking_strict_assembly_same_library_name_different_files/input.yul":97:127 */ linkerSymbol("c3523432985587641d17c68161d2f700c57aaf4ed21cda4f25d76193c831f97f") /* "linking_strict_assembly_same_library_name_different_files/input.yul":146:151 */ dup2 diff --git a/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files_in_link_references/output b/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files_in_link_references/output index b5a44af48..b161a93f8 100644 --- a/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files_in_link_references/output +++ b/test/cmdlineTests/linking_strict_assembly_same_library_name_different_files_in_link_references/output @@ -16,8 +16,9 @@ Binary representation: 73123456789012345678901234567890123456789073__$c3523432985587641d17c68161d2f700c5$__81600055806001555050 Text representation: + /* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":45:75 */ linkerSymbol("f3ffc10c396a7cc41ae954b050792839d20947bf73497d30c49a9fda1ea477ec") - /* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":32:75 */ + /* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":97:127 */ linkerSymbol("c3523432985587641d17c68161d2f700c57aaf4ed21cda4f25d76193c831f97f") /* "linking_strict_assembly_same_library_name_different_files_in_link_references/input.yul":146:151 */ dup2 diff --git a/test/cmdlineTests/linking_strict_assembly_unresolved_references/output b/test/cmdlineTests/linking_strict_assembly_unresolved_references/output index f927894ce..59acd6ae2 100644 --- a/test/cmdlineTests/linking_strict_assembly_unresolved_references/output +++ b/test/cmdlineTests/linking_strict_assembly_unresolved_references/output @@ -16,8 +16,9 @@ Binary representation: 73123456789012345678901234567890123456789073__$fb58009a6b1ecea3b9d99bedd645df4ec3$__81600055806001555050 Text representation: + /* "linking_strict_assembly_unresolved_references/input.yul":45:81 */ linkerSymbol("05b0326038374a21e0895480a58bda0768cdcc04c8d18f154362d1ca5223d245") - /* "linking_strict_assembly_unresolved_references/input.yul":32:81 */ + /* "linking_strict_assembly_unresolved_references/input.yul":103:139 */ linkerSymbol("fb58009a6b1ecea3b9d99bedd645df4ec308f17bc0087e5f39d078f77f809177") /* "linking_strict_assembly_unresolved_references/input.yul":158:163 */ dup2 diff --git a/test/cmdlineTests/object_compiler/output b/test/cmdlineTests/object_compiler/output index 53ccbe424..eb8a3286e 100644 --- a/test/cmdlineTests/object_compiler/output +++ b/test/cmdlineTests/object_compiler/output @@ -32,9 +32,10 @@ Text representation: 0x00 /* "object_compiler/input.yul":118:137 */ sstore - dataSize(sub_0) /* "object_compiler/input.yul":240:259 */ + dataSize(sub_0) dup1 + /* "object_compiler/input.yul":217:238 */ dataOffset(sub_0) /* "object_compiler/input.yul":125:126 */ 0x00 diff --git a/test/cmdlineTests/optimizer_inliner_dynamic_reference/output b/test/cmdlineTests/optimizer_inliner_dynamic_reference/output index 1f5597478..91000a7b7 100644 --- a/test/cmdlineTests/optimizer_inliner_dynamic_reference/output +++ b/test/cmdlineTests/optimizer_inliner_dynamic_reference/output @@ -194,7 +194,7 @@ sub_0: assembly { /* "#utility.yul":406:415 */ add swap1 - /* "#utility.yul":244:421 */ + /* "#utility.yul":196:421 */ jump // out /* "#utility.yul":426:553 */ tag_26: diff --git a/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output b/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output index f17c19176..e82ba9f72 100644 --- a/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output +++ b/test/cmdlineTests/optimizer_inliner_dynamic_reference_constructor/output @@ -199,7 +199,7 @@ sub_0: assembly { /* "#utility.yul":406:415 */ add swap1 - /* "#utility.yul":244:421 */ + /* "#utility.yul":196:421 */ jump // out /* "#utility.yul":426:553 */ tag_22: diff --git a/test/cmdlineTests/standard_yul_object/output.json b/test/cmdlineTests/standard_yul_object/output.json index c0a3434a9..49aaa6a74 100644 --- a/test/cmdlineTests/standard_yul_object/output.json +++ b/test/cmdlineTests/standard_yul_object/output.json @@ -1,4 +1,5 @@ -{"contracts":{"A":{"NamedObject":{"evm":{"assembly":" data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 +{"contracts":{"A":{"NamedObject":{"evm":{"assembly":" /* \"A\":39:61 */ + data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 /* \"A\":80:81 */ 0x00 /* \"A\":76:77 */ diff --git a/test/cmdlineTests/standard_yul_object_name/output.json b/test/cmdlineTests/standard_yul_object_name/output.json index 1a686914d..f2e85ed7c 100644 --- a/test/cmdlineTests/standard_yul_object_name/output.json +++ b/test/cmdlineTests/standard_yul_object_name/output.json @@ -1,4 +1,5 @@ -{"contracts":{"A":{"NamedObject":{"evm":{"assembly":" data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 +{"contracts":{"A":{"NamedObject":{"evm":{"assembly":" /* \"A\":39:61 */ + data_4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 /* \"A\":80:81 */ 0x00 /* \"A\":76:77 */ diff --git a/test/cmdlineTests/strict_asm_optimizer_steps/output b/test/cmdlineTests/strict_asm_optimizer_steps/output index 595199408..1ed63ba66 100644 --- a/test/cmdlineTests/strict_asm_optimizer_steps/output +++ b/test/cmdlineTests/strict_asm_optimizer_steps/output @@ -48,14 +48,15 @@ Text representation: revert /* "strict_asm_optimizer_steps/input.yul":58:60 */ tag_1: - /* "strict_asm_optimizer_steps/input.yul":98:163 */ + /* "strict_asm_optimizer_steps/input.yul":138:162 */ dataSize(sub_0) + /* "strict_asm_optimizer_steps/input.yul":110:136 */ dataOffset(sub_0) /* "strict_asm_optimizer_steps/input.yul":107:108 */ 0x00 /* "strict_asm_optimizer_steps/input.yul":98:163 */ codecopy - /* "strict_asm_optimizer_steps/input.yul":172:207 */ + /* "strict_asm_optimizer_steps/input.yul":182:206 */ dataSize(sub_0) /* "strict_asm_optimizer_steps/input.yul":179:180 */ 0x00 diff --git a/test/cmdlineTests/yul_verbatim/output b/test/cmdlineTests/yul_verbatim/output index 821e7461a..60fc7e6d1 100644 --- a/test/cmdlineTests/yul_verbatim/output +++ b/test/cmdlineTests/yul_verbatim/output @@ -32,6 +32,7 @@ Text representation: dup1 /* "yul_verbatim/input.yul":75:76 */ dup3 + /* "yul_verbatim/input.yul":53:80 */ verbatimbytecode_616263 /* "yul_verbatim/input.yul":95:96 */ dup3 @@ -39,6 +40,7 @@ Text representation: dup2 /* "yul_verbatim/input.yul":85:97 */ sstore + /* "yul_verbatim/input.yul":111:132 */ verbatimbytecode_646566 /* "yul_verbatim/input.yul":137:158 */ verbatimbytecode_78797a diff --git a/test/libyul/objectCompiler/datacopy.yul b/test/libyul/objectCompiler/datacopy.yul index 4499a3771..b6ec642f0 100644 --- a/test/libyul/objectCompiler/datacopy.yul +++ b/test/libyul/objectCompiler/datacopy.yul @@ -13,14 +13,15 @@ object "a" { } // ---- // Assembly: -// /* "source":26:73 */ +// /* "source":57:72 */ // dataSize(sub_0) +// /* "source":38:55 */ // dataOffset(sub_0) // /* "source":35:36 */ // 0x00 // /* "source":26:73 */ // codecopy -// /* "source":78:104 */ +// /* "source":88:103 */ // dataSize(sub_0) // /* "source":85:86 */ // 0x00 @@ -29,13 +30,13 @@ object "a" { // stop // // sub_0: assembly { -// /* "source":143:171 */ +// /* "source":153:170 */ // 0x00 // /* "source":150:151 */ // dup1 // /* "source":143:171 */ // sstore -// /* "source":178:206 */ +// /* "source":188:205 */ // 0x0d // /* "source":185:186 */ // 0x00 @@ -46,4 +47,4 @@ object "a" { // } // Bytecode: 600a600d600039600a6000f3fe60008055600d600052fe // Opcodes: PUSH1 0xA PUSH1 0xD PUSH1 0x0 CODECOPY PUSH1 0xA PUSH1 0x0 RETURN INVALID PUSH1 0x0 DUP1 SSTORE PUSH1 0xD PUSH1 0x0 MSTORE INVALID -// SourceMappings: 26:47:0:-:0;;35:1;26:47;78:26;85:1;78:26 +// SourceMappings: 57:15:0:-:0;38:17;35:1;26:47;88:15;85:1;78:26 diff --git a/test/libyul/objectCompiler/dataoffset_code.yul b/test/libyul/objectCompiler/dataoffset_code.yul index ed6242090..00184feab 100644 --- a/test/libyul/objectCompiler/dataoffset_code.yul +++ b/test/libyul/objectCompiler/dataoffset_code.yul @@ -7,7 +7,7 @@ object "a" { } // ---- // Assembly: -// /* "source":22:50 */ +// /* "source":32:49 */ // dataOffset(sub_0) // /* "source":29:30 */ // 0x00 @@ -27,4 +27,4 @@ object "a" { // } // Bytecode: 6006600055fe6008600055fe // Opcodes: PUSH1 0x6 PUSH1 0x0 SSTORE INVALID PUSH1 0x8 PUSH1 0x0 SSTORE INVALID -// SourceMappings: 22:28:0:-:0;29:1;22:28 +// SourceMappings: 32:17:0:-:0;29:1;22:28 diff --git a/test/libyul/objectCompiler/dataoffset_data.yul b/test/libyul/objectCompiler/dataoffset_data.yul index 6848ce9b9..2a029785b 100644 --- a/test/libyul/objectCompiler/dataoffset_data.yul +++ b/test/libyul/objectCompiler/dataoffset_data.yul @@ -4,7 +4,7 @@ object "a" { } // ---- // Assembly: -// /* "source":22:52 */ +// /* "source":32:51 */ // data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f // /* "source":29:30 */ // 0x00 @@ -14,4 +14,4 @@ object "a" { // data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421 // Bytecode: 6006600055fe48656c6c6f2c20576f726c6421 // Opcodes: PUSH1 0x6 PUSH1 0x0 SSTORE INVALID 0x48 PUSH6 0x6C6C6F2C2057 PUSH16 0x726C6421000000000000000000000000 -// SourceMappings: 22:30:0:-:0;29:1;22:30 +// SourceMappings: 32:19:0:-:0;29:1;22:30 diff --git a/test/libyul/objectCompiler/dataoffset_self.yul b/test/libyul/objectCompiler/dataoffset_self.yul index 4ee790d94..163cd7574 100644 --- a/test/libyul/objectCompiler/dataoffset_self.yul +++ b/test/libyul/objectCompiler/dataoffset_self.yul @@ -4,7 +4,7 @@ object "a" { } // ---- // Assembly: -// /* "source":22:48 */ +// /* "source":32:47 */ // 0x00 // /* "source":29:30 */ // dup1 @@ -14,4 +14,4 @@ object "a" { // data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421 // Bytecode: 60008055fe // Opcodes: PUSH1 0x0 DUP1 SSTORE INVALID -// SourceMappings: 22:26:0:-:0;29:1;22:26 +// SourceMappings: 32:15:0:-:0;29:1;22:26 diff --git a/test/libyul/objectCompiler/datasize_code.yul b/test/libyul/objectCompiler/datasize_code.yul index c48b1eba9..fc26e4eb9 100644 --- a/test/libyul/objectCompiler/datasize_code.yul +++ b/test/libyul/objectCompiler/datasize_code.yul @@ -7,7 +7,7 @@ object "a" { } // ---- // Assembly: -// /* "source":22:48 */ +// /* "source":32:47 */ // dataSize(sub_0) // /* "source":29:30 */ // 0x00 @@ -27,4 +27,4 @@ object "a" { // } // Bytecode: 6006600055fe // Opcodes: PUSH1 0x6 PUSH1 0x0 SSTORE INVALID -// SourceMappings: 22:26:0:-:0;29:1;22:26 +// SourceMappings: 32:15:0:-:0;29:1;22:26 diff --git a/test/libyul/objectCompiler/datasize_data.yul b/test/libyul/objectCompiler/datasize_data.yul index 191d162df..a9ba7b027 100644 --- a/test/libyul/objectCompiler/datasize_data.yul +++ b/test/libyul/objectCompiler/datasize_data.yul @@ -4,7 +4,7 @@ object "a" { } // ---- // Assembly: -// /* "source":22:50 */ +// /* "source":32:49 */ // 0x0d // /* "source":29:30 */ // 0x00 @@ -14,4 +14,4 @@ object "a" { // data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421 // Bytecode: 600d600055fe // Opcodes: PUSH1 0xD PUSH1 0x0 SSTORE INVALID -// SourceMappings: 22:28:0:-:0;29:1;22:28 +// SourceMappings: 32:17:0:-:0;29:1;22:28 diff --git a/test/libyul/objectCompiler/datasize_self.yul b/test/libyul/objectCompiler/datasize_self.yul index cfd96555a..d4a3c8d06 100644 --- a/test/libyul/objectCompiler/datasize_self.yul +++ b/test/libyul/objectCompiler/datasize_self.yul @@ -4,7 +4,7 @@ object "a" { } // ---- // Assembly: -// /* "source":22:46 */ +// /* "source":32:45 */ // bytecodeSize // /* "source":29:30 */ // 0x00 @@ -14,4 +14,4 @@ object "a" { // data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421 // Bytecode: 6006600055fe // Opcodes: PUSH1 0x6 PUSH1 0x0 SSTORE INVALID -// SourceMappings: 22:24:0:-:0;29:1;22:24 +// SourceMappings: 32:13:0:-:0;29:1;22:24 diff --git a/test/libyul/objectCompiler/function_series.yul b/test/libyul/objectCompiler/function_series.yul index 9efcf77af..cf4911997 100644 --- a/test/libyul/objectCompiler/function_series.yul +++ b/test/libyul/objectCompiler/function_series.yul @@ -13,12 +13,10 @@ object "Contract" { // /* "source":33:48 */ // jump(tag_1) // tag_2: -// /* "source":46:48 */ // tag_3: // jump // out // /* "source":53:68 */ // tag_4: -// /* "source":66:68 */ // tag_5: // jump // out // tag_1: @@ -30,4 +28,4 @@ object "Contract" { // sstore // Bytecode: 6009565b5b565b5b565b6001600055 // Opcodes: PUSH1 0x9 JUMP JUMPDEST JUMPDEST JUMP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE -// SourceMappings: 33:15:0:-:0;;;46:2;:::o;53:15::-;66:2;:::o;:::-;83:1;80;73:12 +// SourceMappings: 33:15:0:-:0;;;;:::o;53:::-;;:::o;:::-;83:1;80;73:12 diff --git a/test/libyul/objectCompiler/jump_tags.yul b/test/libyul/objectCompiler/jump_tags.yul index bd3920900..93aea8ea0 100644 --- a/test/libyul/objectCompiler/jump_tags.yul +++ b/test/libyul/objectCompiler/jump_tags.yul @@ -21,7 +21,7 @@ object "Contract" { // tag_5 // jump // in // tag_4: -// /* "source":46:54 */ +// /* "source":33:54 */ // tag_3: // jump // out // /* "source":59:104 */ @@ -49,7 +49,7 @@ object "Contract" { // tag_5 // jump // in // tag_8: -// /* "source":73:104 */ +// /* "source":59:104 */ // pop // tag_6: // jump // out @@ -64,4 +64,4 @@ object "Contract" { // tag_9: // Bytecode: 6026565b600b6001600e565b5b565b8015601857506024565b602260028201600e565b505b565b602e6001600e565b // Opcodes: PUSH1 0x26 JUMP JUMPDEST PUSH1 0xB PUSH1 0x1 PUSH1 0xE JUMP JUMPDEST JUMPDEST JUMP JUMPDEST DUP1 ISZERO PUSH1 0x18 JUMPI POP PUSH1 0x24 JUMP JUMPDEST PUSH1 0x22 PUSH1 0x2 DUP3 ADD PUSH1 0xE JUMP JUMPDEST POP JUMPDEST JUMP JUMPDEST PUSH1 0x2E PUSH1 0x1 PUSH1 0xE JUMP JUMPDEST -// SourceMappings: 33:21:0:-:0;;;48:4;50:1;48:4;:::i;:::-;46:8;:::o;59:45::-;78:1;75:2;;;82:5;;;75:2;90:12;99:1;96;92:9;90:12;:::i;:::-;73:31;;:::o;:::-;109:4;111:1;109:4;:::i;:::- +// SourceMappings: 33:21:0:-:0;;;48:4;50:1;48:4;:::i;:::-;33:21;:::o;59:45::-;78:1;75:2;;;82:5;;;75:2;90:12;99:1;96;92:9;90:12;:::i;:::-;59:45;;:::o;:::-;109:4;111:1;109:4;:::i;:::- diff --git a/test/libyul/objectCompiler/linkersymbol.yul b/test/libyul/objectCompiler/linkersymbol.yul index 65bf004ef..9dac37448 100644 --- a/test/libyul/objectCompiler/linkersymbol.yul +++ b/test/libyul/objectCompiler/linkersymbol.yul @@ -7,6 +7,7 @@ object "a" { } // ---- // Assembly: +// /* "source":44:79 */ // linkerSymbol("f919ba91ac99f96129544b80b9516b27a80e376b9dc693819d0b18b7e0395612") // /* "source":109:119 */ // 0x18530aaf @@ -39,4 +40,4 @@ object "a" { // pop // Bytecode: 7300000000000000000000000000000000000000006318530aaf60e31b60805260006080600460806000855af15050 // Opcodes: PUSH20 0x0 PUSH4 0x18530AAF PUSH1 0xE3 SHL PUSH1 0x80 MSTORE PUSH1 0x0 PUSH1 0x80 PUSH1 0x4 PUSH1 0x80 PUSH1 0x0 DUP6 GAS CALL POP POP -// SourceMappings: :::-:0;109:10:0;104:3;100:20;95:3;88:33;179:1;174:3;171:1;166:3;163:1;157:4;150:5;145:36;22:165; +// SourceMappings: 44:35:0:-:0;109:10;104:3;100:20;95:3;88:33;179:1;174:3;171:1;166:3;163:1;157:4;150:5;145:36;22:165; diff --git a/test/libyul/objectCompiler/long_object_name.yul b/test/libyul/objectCompiler/long_object_name.yul index 0aa8c4405..ad8266d1e 100644 --- a/test/libyul/objectCompiler/long_object_name.yul +++ b/test/libyul/objectCompiler/long_object_name.yul @@ -10,7 +10,7 @@ object "t" { // optimizationPreset: full // ---- // Assembly: -// /* "source":23:147 */ +// /* "source":33:146 */ // dataSize(sub_0) // /* "source":30:31 */ // 0x00 @@ -22,4 +22,4 @@ object "t" { // } // Bytecode: 6000600055fe // Opcodes: PUSH1 0x0 PUSH1 0x0 SSTORE INVALID -// SourceMappings: 23:124:0:-:0;30:1;23:124 +// SourceMappings: 33:113:0:-:0;30:1;23:124 diff --git a/test/libyul/objectCompiler/metadata.yul b/test/libyul/objectCompiler/metadata.yul index 9facd54e4..ac66e4bda 100644 --- a/test/libyul/objectCompiler/metadata.yul +++ b/test/libyul/objectCompiler/metadata.yul @@ -21,8 +21,9 @@ object "A" { } // ---- // Assembly: +// /* "source":35:48 */ // 0x0e -// /* "source":26:48 */ +// /* "source":62:75 */ // 0x03 // /* "source":90:91 */ // dup2 @@ -44,6 +45,7 @@ object "A" { // data_e1629b9dda060bb30c7908346f6af189c16773fa148d3366701fbaa35d54f3c8 414243 // // sub_0: assembly { +// /* "source":157:176 */ // data_211450822d7f8c345093893187e7e1fbebc4ec67af72601920194be14104e336 // /* "source":193:194 */ // dup1 @@ -62,4 +64,4 @@ object "A" { // auxdata: 0x4d32 // Bytecode: 600e600381600055806020555050fe4d32 // Opcodes: PUSH1 0xE PUSH1 0x3 DUP2 PUSH1 0x0 SSTORE DUP1 PUSH1 0x20 SSTORE POP POP INVALID 0x4D ORIGIN -// SourceMappings: :::-:0;26:22:0;90:1;87;80:12;108:1;104:2;97:13;20:94; +// SourceMappings: 35:13:0:-:0;62;90:1;87;80:12;108:1;104:2;97:13;20:94; diff --git a/test/libyul/objectCompiler/subObjectAccess.yul b/test/libyul/objectCompiler/subObjectAccess.yul index cadb6cc41..1e28ed5d5 100644 --- a/test/libyul/objectCompiler/subObjectAccess.yul +++ b/test/libyul/objectCompiler/subObjectAccess.yul @@ -67,24 +67,25 @@ object "A" { } // ---- // Assembly: +// /* "source":37:52 */ // 0x00 -// /* "source":26:52 */ +// /* "source":68:81 */ // bytecodeSize -// /* "source":57:81 */ +// /* "source":97:112 */ // dataOffset(sub_0) -// /* "source":86:112 */ +// /* "source":128:141 */ // dataSize(sub_0) -// /* "source":117:141 */ +// /* "source":158:175 */ // dataOffset(sub_0.sub_0) -// /* "source":146:175 */ +// /* "source":192:207 */ // dataSize(sub_0.sub_0) -// /* "source":180:207 */ +// /* "source":224:241 */ // dataOffset(sub_0.sub_1) -// /* "source":212:241 */ +// /* "source":258:273 */ // dataSize(sub_0.sub_1) -// /* "source":246:273 */ +// /* "source":291:310 */ // dataOffset(sub_0.sub_0.sub_0) -// /* "source":278:310 */ +// /* "source":328:345 */ // dataSize(sub_0.sub_0.sub_0) // /* "source":361:364 */ // dup10 @@ -156,16 +157,17 @@ object "A" { // data_acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f 48656c6c6f2c20576f726c6421 // // sub_0: assembly { +// /* "source":659:674 */ // dataOffset(sub_0) -// /* "source":648:674 */ +// /* "source":692:705 */ // dataSize(sub_0) -// /* "source":681:705 */ +// /* "source":723:738 */ // dataOffset(sub_1) -// /* "source":712:738 */ +// /* "source":756:769 */ // dataSize(sub_1) -// /* "source":745:769 */ +// /* "source":788:805 */ // dataOffset(sub_0.sub_0) -// /* "source":776:805 */ +// /* "source":824:839 */ // dataSize(sub_0.sub_0) // /* "source":857:860 */ // dup6 @@ -212,8 +214,9 @@ object "A" { // stop // // sub_0: assembly { +// /* "source":1052:1067 */ // dataOffset(sub_0) -// /* "source":1041:1067 */ +// /* "source":1087:1100 */ // dataSize(sub_0) // /* "source":1120:1123 */ // dup2 @@ -248,4 +251,4 @@ object "A" { // } // Bytecode: 600060996045603f60866013608560016084600189600055886020558760405586606055856080558460a0558360c0558260e055816101005580610120556101406000f3fe602a6013603d6001603e600185600055846020558360405582606055816080558060a05560c06000f3fe60126001816000558060205560406000f3fefefefefefe60126001816000558060205560406000f3fefe // Opcodes: PUSH1 0x0 PUSH1 0x99 PUSH1 0x45 PUSH1 0x3F PUSH1 0x86 PUSH1 0x13 PUSH1 0x85 PUSH1 0x1 PUSH1 0x84 PUSH1 0x1 DUP10 PUSH1 0x0 SSTORE DUP9 PUSH1 0x20 SSTORE DUP8 PUSH1 0x40 SSTORE DUP7 PUSH1 0x60 SSTORE DUP6 PUSH1 0x80 SSTORE DUP5 PUSH1 0xA0 SSTORE DUP4 PUSH1 0xC0 SSTORE DUP3 PUSH1 0xE0 SSTORE DUP2 PUSH2 0x100 SSTORE DUP1 PUSH2 0x120 SSTORE PUSH2 0x140 PUSH1 0x0 RETURN INVALID PUSH1 0x2A PUSH1 0x13 PUSH1 0x3D PUSH1 0x1 PUSH1 0x3E PUSH1 0x1 DUP6 PUSH1 0x0 SSTORE DUP5 PUSH1 0x20 SSTORE DUP4 PUSH1 0x40 SSTORE DUP3 PUSH1 0x60 SSTORE DUP2 PUSH1 0x80 SSTORE DUP1 PUSH1 0xA0 SSTORE PUSH1 0xC0 PUSH1 0x0 RETURN INVALID PUSH1 0x12 PUSH1 0x1 DUP2 PUSH1 0x0 SSTORE DUP1 PUSH1 0x20 SSTORE PUSH1 0x40 PUSH1 0x0 RETURN INVALID INVALID INVALID INVALID INVALID INVALID PUSH1 0x12 PUSH1 0x1 DUP2 PUSH1 0x0 SSTORE DUP1 PUSH1 0x20 SSTORE PUSH1 0x40 PUSH1 0x0 RETURN INVALID INVALID -// SourceMappings: :::-:0;26:26:0;57:24;86:26;117:24;146:29;180:27;212:29;246:27;278:32;361:3;358:1;351:14;381:3;377:2;370:15;401:3;397:2;390:15;421:3;417:2;410:15;442:4;437:3;430:17;464:4;459:3;452:17;486:4;481:3;474:17;508:4;503:3;496:17;530:5;525:3;518:18;553:5;548:3;541:18;574:3;571:1;564:14 +// SourceMappings: 37:15:0:-:0;68:13;97:15;128:13;158:17;192:15;224:17;258:15;291:19;328:17;361:3;358:1;351:14;381:3;377:2;370:15;401:3;397:2;390:15;421:3;417:2;410:15;442:4;437:3;430:17;464:4;459:3;452:17;486:4;481:3;474:17;508:4;503:3;496:17;530:5;525:3;518:18;553:5;548:3;541:18;574:3;571:1;564:14