From 32d6c1c3168dc19ef818e5ff605af3a40f5601e8 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 30 Jun 2017 01:14:58 +0100 Subject: [PATCH] MLOAD has side-effects, treat it like that in the optimiser --- Changelog.md | 1 + libevmasm/Instruction.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 68f2272d1..3aac912b6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -20,6 +20,7 @@ Features: * Static Analyzer: Warn about deprecation of ``callcode``. Bugfixes: + * Assembly: mark ``MLOAD`` to have side effects in the optimiser. * Code generator: Use ``REVERT`` instead of ``INVALID`` for generated input validation routines. * Type Checker: Fix address literals not being treated as compile-time constants. * Type Checker: Disallow invoking the same modifier multiple times. diff --git a/libevmasm/Instruction.cpp b/libevmasm/Instruction.cpp index 8feb733a1..b38981d27 100644 --- a/libevmasm/Instruction.cpp +++ b/libevmasm/Instruction.cpp @@ -216,7 +216,7 @@ static const std::map c_instructionInfo = { Instruction::DIFFICULTY, { "DIFFICULTY", 0, 0, 1, false, Tier::Base } }, { Instruction::GASLIMIT, { "GASLIMIT", 0, 0, 1, false, Tier::Base } }, { Instruction::POP, { "POP", 0, 1, 0, false, Tier::Base } }, - { Instruction::MLOAD, { "MLOAD", 0, 1, 1, false, Tier::VeryLow } }, + { Instruction::MLOAD, { "MLOAD", 0, 1, 1, true, Tier::VeryLow } }, { Instruction::MSTORE, { "MSTORE", 0, 2, 0, true, Tier::VeryLow } }, { Instruction::MSTORE8, { "MSTORE8", 0, 2, 0, true, Tier::VeryLow } }, { Instruction::SLOAD, { "SLOAD", 0, 1, 1, false, Tier::Special } },