No into body.

This commit is contained in:
chriseth 2019-09-19 17:03:30 +02:00
parent 5d6e983be3
commit 19ccdfb0b3
4 changed files with 12 additions and 48 deletions

View File

@ -31,7 +31,11 @@ void ForLoopConditionIntoBody::run(OptimiserStepContext& _context, Block& _ast)
void ForLoopConditionIntoBody::operator()(ForLoop& _forLoop)
{
if (m_dialect.booleanNegationFunction() && _forLoop.condition->type() != typeid(Literal))
if (
m_dialect.booleanNegationFunction() &&
_forLoop.condition->type() != typeid(Literal) &&
_forLoop.condition->type() != typeid(Identifier)
)
{
langutil::SourceLocation loc = locationOf(*_forLoop.condition);
_forLoop.body.statements.insert(

View File

@ -17,8 +17,8 @@
// { }
// for { } 0 { }
// { }
// for { } 1 { }
// { if iszero(a) { break } }
// for { } a { }
// { }
// for { } 1 { }
// {
// if iszero(add(a, a)) { break }

View File

@ -21,50 +21,10 @@
// ----
// {
// {
// let p := 0
// let p_1 := p
// let p_2 := p
// let p_3 := p
// let p_4 := p
// let p_5 := p
// let p_6 := p
// let p_7 := p
// let p_8 := p
// let p_9 := p
// let p_10 := p
// let p_11 := mload(0x40)
// mstore(0x40, add(p_11, 0x20))
// mstore(0x40, add(p_11, 96))
// mstore(add(p_11, 128), 2)
// let _1 := 1
// let p := mload(0x40)
// mstore(0x40, add(p, 0x20))
// mstore(0x40, add(p, 96))
// mstore(add(p, 128), 2)
// mstore(0x40, 0x20)
// for { } iszero(p) { }
// {
// p := 0
// if p_1 { break }
// p_1 := p
// if p_2 { break }
// p_2 := p
// if p_3 { break }
// p_3 := p
// if p_4 { break }
// p_4 := p
// if p_5 { break }
// p_5 := p
// if p_6 { break }
// p_6 := p
// if p_7 { break }
// p_7 := p
// if p_8 { break }
// p_8 := p
// if p_9 { break }
// p_9 := p
// if p_10 { break }
// p_10 := p
// if iszero(_1) { break }
// if _1 { break }
// _1 := p
// mstore(128, 0x40)
// }
// }
// }

View File

@ -31,7 +31,7 @@
// let _4 := lt(or(1, add(pc(), _3)), 1)
// let _5 := pc()
// let _6 := pc()
// pop(keccak256(pc(), or(gt(not(pc()), 1), 1)))
// pop(or(keccak256(pc(), or(gt(not(pc()), 1), 1)), 1))
// mstore(lt(or(gt(1, or(or(gt(or(or(or(gt(or(gt(_3, _6), 1), _5), _4), _2), 1), 1), _1), 1)), 1), 1), 1)
// sstore(not(pc()), 1)
// sstore(0, 0)