aboutsummaryrefslogtreecommitdiffstats
path: root/libevmasm
diff options
context:
space:
mode:
authorYoichi Hirai <i@yoichihirai.com>2016-10-24 23:33:57 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2016-11-30 19:16:43 +0800
commitdf4b405f9c1cd3ebfd2787b5f1f6925cabf789d3 (patch)
tree94b868e53f0527d5d7e50d2f135bc51bdef57954 /libevmasm
parent4ff89dda1d9d81170b65775b33c1cfbd7e5e6b48 (diff)
downloaddexon-solidity-df4b405f9c1cd3ebfd2787b5f1f6925cabf789d3.tar.gz
dexon-solidity-df4b405f9c1cd3ebfd2787b5f1f6925cabf789d3.tar.zst
dexon-solidity-df4b405f9c1cd3ebfd2787b5f1f6925cabf789d3.zip
Add more optimization rules
Diffstat (limited to 'libevmasm')
-rw-r--r--libevmasm/ExpressionClasses.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/libevmasm/ExpressionClasses.cpp b/libevmasm/ExpressionClasses.cpp
index bb71be2e..d5ccd7e3 100644
--- a/libevmasm/ExpressionClasses.cpp
+++ b/libevmasm/ExpressionClasses.cpp
@@ -255,6 +255,7 @@ Rules::Rules()
{{Instruction::AND, {X, 0}}, [=]{ return u256(0); }},
{{Instruction::MUL, {X, 0}}, [=]{ return u256(0); }},
{{Instruction::DIV, {X, 0}}, [=]{ return u256(0); }},
+ {{Instruction::DIV, {0, X}}, [=]{ return u256(0); }},
{{Instruction::MOD, {X, 0}}, [=]{ return u256(0); }},
{{Instruction::MOD, {0, X}}, [=]{ return u256(0); }},
{{Instruction::OR, {X, ~u256(0)}}, [=]{ return ~u256(0); }},
@@ -272,6 +273,11 @@ Rules::Rules()
{{Instruction::MOD, {X, X}}, [=]{ return u256(0); }},
{{Instruction::NOT, {{Instruction::NOT, {X}}}}, [=]{ return X; }},
+ {{Instruction::XOR, {{{X}, {Instruction::XOR, {X, Y}}}}}, [=]{ return Y; }},
+ {{Instruction::OR, {{{X}, {Instruction::AND, {X, Y}}}}}, [=]{ return X; }},
+ {{Instruction::AND, {{{X}, {Instruction::OR, {X, Y}}}}}, [=]{ return X; }},
+ {{Instruction::AND, {{{X}, {Instruction::NOT, {X}}}}}, [=]{ return u256(0); }},
+ {{Instruction::OR, {{{X}, {Instruction::NOT, {X}}}}}, [=]{ return ~u256(0); }},
};
// Double negation of opcodes with binary result
for (auto const& op: vector<Instruction>{
it/cgit.cgi/freebsd-ports-gnome/commit/devel/p5-DateTime-Event-NameDay?id=c7f8b46f65bbf1515bfe764962bba3961d6dfe11'>- Cleaning MD5 in perl@'s ports.jadawin2011-05-171-1/+0 * - Remove test-only and included-in-perl-5.8 dependencies.kuriyama2009-12-251-1/+0 * - replace ${SITE_PERL}/${PERL_ARCH}/Params/Validate.pm with p5-Params-Validat...leeym2009-10-231-3/+3