aboutsummaryrefslogtreecommitdiffstats
path: root/libjulia/optimiser/ExpressionSimplifier.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-02-02 01:02:10 +0800
committerchriseth <chris@ethereum.org>2018-02-07 05:51:30 +0800
commit5523296eaa68a591a331d9b75dc19cf11d1c538e (patch)
tree658443a1c32b42b56c06dca9d491f5c7e980a007 /libjulia/optimiser/ExpressionSimplifier.cpp
parentf7392cc6983a48ab0d482270912bd5de4042e577 (diff)
downloaddexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.tar
dexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.tar.gz
dexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.tar.bz2
dexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.tar.lz
dexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.tar.xz
dexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.tar.zst
dexon-solidity-5523296eaa68a591a331d9b75dc19cf11d1c538e.zip
Also apply simplification rules that require multiple identical sub-expressions.
Diffstat (limited to 'libjulia/optimiser/ExpressionSimplifier.cpp')
-rw-r--r--libjulia/optimiser/ExpressionSimplifier.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/libjulia/optimiser/ExpressionSimplifier.cpp b/libjulia/optimiser/ExpressionSimplifier.cpp
index 1d6d9f8b..bdcf3168 100644
--- a/libjulia/optimiser/ExpressionSimplifier.cpp
+++ b/libjulia/optimiser/ExpressionSimplifier.cpp
@@ -40,6 +40,7 @@ void ExpressionSimplifier::visit(Expression& _expression)
ASTModifier::visit(_expression);
while (auto match = SimplificationRules::findFirstMatch(_expression))
{
+ // Do not apply the rule if it removes non-constant parts of the expression.
// TODO: The check could actually be less strict than "movable".
// We only require "Does not cause side-effects".
if (std::get<2>(*match) && !MovableChecker(_expression).movable())