mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #7425 from ethereum/fixOrderOpt
Fix order bug in optimizer.
This commit is contained in:
commit
1b8fe275ee
@ -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)
|
||||||
|
@ -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 = [=]() {
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
for {} div(create(0, 1, 0), shl(msize(), 1)) {}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ====
|
||||||
|
// step: expressionSimplifier
|
||||||
|
// EVMVersion: >byzantium
|
||||||
|
// ----
|
||||||
|
// {
|
||||||
|
// for { } div(create(0, 1, 0), shl(msize(), 1)) { }
|
||||||
|
// { }
|
||||||
|
// }
|
Loading…
Reference in New Issue
Block a user