mirror of
https://github.com/irmen/prog8.git
synced 2025-02-16 22:30:46 +00:00
remove binexpr operand rotation that didn't help much at all
This commit is contained in:
parent
d1f8ee1e56
commit
498841d45d
@ -226,36 +226,6 @@ internal class StatementReorderer(
|
|||||||
// A = v <associative-operator> A ==> A = A <associative-operator> v
|
// A = v <associative-operator> A ==> A = A <associative-operator> v
|
||||||
return listOf(IAstModification.SwapOperands(binExpr))
|
return listOf(IAstModification.SwapOperands(binExpr))
|
||||||
}
|
}
|
||||||
|
|
||||||
val leftBinExpr = binExpr.left as? BinaryExpression
|
|
||||||
if(leftBinExpr?.operator == binExpr.operator) {
|
|
||||||
return if(leftBinExpr.left isSameAs assignment.target) {
|
|
||||||
// A = (A <associative-operator> x) <same-operator> y ==> A = A <associative-operator> (x <same-operator> y)
|
|
||||||
val newRight = BinaryExpression(leftBinExpr.right, binExpr.operator, binExpr.right, binExpr.position)
|
|
||||||
val newValue = BinaryExpression(leftBinExpr.left, binExpr.operator, newRight, binExpr.position)
|
|
||||||
listOf(IAstModification.ReplaceNode(binExpr, newValue, assignment))
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// A = (x <associative-operator> A) <same-operator> y ==> A = A <associative-operator> (x <same-operator> y)
|
|
||||||
val newRight = BinaryExpression(leftBinExpr.left, binExpr.operator, binExpr.right, binExpr.position)
|
|
||||||
val newValue = BinaryExpression(leftBinExpr.right, binExpr.operator, newRight, binExpr.position)
|
|
||||||
listOf(IAstModification.ReplaceNode(binExpr, newValue, assignment))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val rightBinExpr = binExpr.right as? BinaryExpression
|
|
||||||
if(rightBinExpr?.operator == binExpr.operator) {
|
|
||||||
return if(rightBinExpr.left isSameAs assignment.target) {
|
|
||||||
// A = x <associative-operator> (A <same-operator> y) ==> A = A <associative-operator> (x <same-operator> y)
|
|
||||||
val newRight = BinaryExpression(binExpr.left, binExpr.operator, rightBinExpr.right, binExpr.position)
|
|
||||||
val newValue = BinaryExpression(rightBinExpr.left, binExpr.operator, newRight, binExpr.position)
|
|
||||||
listOf(IAstModification.ReplaceNode(binExpr, newValue, assignment))
|
|
||||||
} else {
|
|
||||||
// A = x <associative-operator> (y <same-operator> A) ==> A = A <associative-operator> (x <same-operator> y)
|
|
||||||
val newRight = BinaryExpression(binExpr.left, binExpr.operator, rightBinExpr.left, binExpr.position)
|
|
||||||
val newValue = BinaryExpression(rightBinExpr.right, binExpr.operator, newRight, binExpr.position)
|
|
||||||
listOf(IAstModification.ReplaceNode(binExpr, newValue, assignment))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
TODO
|
TODO
|
||||||
====
|
====
|
||||||
|
|
||||||
- why is the right term of cx16.r0 = (cx16.r1+cx16.r2) + (cx16.r1+cx16.r2) flipped around but the left term isn't?
|
- Revert or fix current "desugar chained comparisons" it causes problems with if statements (in optimizer).
|
||||||
|
|
||||||
- Revert or fix current "desugar chained comparisons" it causes problems with if statements.
|
|
||||||
ubyte @shared n=20
|
ubyte @shared n=20
|
||||||
ubyte @shared L1=10
|
ubyte @shared L1=10
|
||||||
ubyte @shared L2=100
|
ubyte @shared L2=100
|
||||||
|
Loading…
x
Reference in New Issue
Block a user