Fix reordering bug in optimizer.

This commit is contained in:
chriseth 2019-09-13 18:09:16 +02:00
parent 68986a58b6
commit c224b09bb3
2 changed files with 5 additions and 2 deletions

View File

@ -14,6 +14,7 @@ Compiler Features:
Bugfixes: Bugfixes:
* Fix internal error when popping a dynamic storage array of mappings. * Fix internal error when popping a dynamic storage array of mappings.
* Yul Optimizer: Fix reordering bug in connection with shifted one and mul/div-instructions in for loop conditions.
### 0.5.11 (2019-08-12) ### 0.5.11 (2019-08-12)

View File

@ -475,7 +475,8 @@ std::vector<SimplificationRule<Pattern>> simplificationRuleListPart7(
[=]() -> Pattern { [=]() -> Pattern {
return {Instruction::SHL, {Y, X}}; return {Instruction::SHL, {Y, X}};
}, },
false // Actually only changes the order, does not remove.
true
}); });
rules.push_back({ rules.push_back({
// MUL(SHL(X, 1), Y) -> SHL(X, Y) // MUL(SHL(X, 1), Y) -> SHL(X, Y)
@ -492,7 +493,8 @@ std::vector<SimplificationRule<Pattern>> simplificationRuleListPart7(
[=]() -> Pattern { [=]() -> Pattern {
return {Instruction::SHR, {Y, X}}; return {Instruction::SHR, {Y, X}};
}, },
false // Actually only changes the order, does not remove.
true
}); });
std::function<bool()> feasibilityFunction = [=]() { std::function<bool()> feasibilityFunction = [=]() {