From b8074cdf788ee1cae862929c0428a95cc5248269 Mon Sep 17 00:00:00 2001 From: chriseth Date: Wed, 17 Jan 2018 19:18:42 +0100 Subject: Add flag to indicate whether it can be applied to expressions with side-effects. --- libevmasm/ExpressionClasses.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libevmasm/ExpressionClasses.cpp') diff --git a/libevmasm/ExpressionClasses.cpp b/libevmasm/ExpressionClasses.cpp index fc283b0b..58c254b1 100644 --- a/libevmasm/ExpressionClasses.cpp +++ b/libevmasm/ExpressionClasses.cpp @@ -202,7 +202,7 @@ ExpressionClasses::Id ExpressionClasses::tryToSimplify(Expression const& _expr, //cout << "with rule " << match->first.toString() << endl; //ExpressionTemplate t(match->second()); //cout << "to " << match->second().toString() << endl; - return rebuildExpression(ExpressionTemplate(match->second(), _expr.item->location())); + return rebuildExpression(ExpressionTemplate(std::get<1>(*match)(), _expr.item->location())); } if (!_secondRun && _expr.arguments.size() == 2 && SemanticInformation::isCommutativeOperation(*_expr.item)) -- cgit v1.2.3 From 65c31ecaeb66e186a0ab6aa6cb2c44ec1a35a868 Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 18 Jan 2018 13:58:51 +0100 Subject: Remove recursive call to simplify with reversed arguments. (We now have explicit rules for that). --- libevmasm/ExpressionClasses.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'libevmasm/ExpressionClasses.cpp') diff --git a/libevmasm/ExpressionClasses.cpp b/libevmasm/ExpressionClasses.cpp index 58c254b1..3825f5ed 100644 --- a/libevmasm/ExpressionClasses.cpp +++ b/libevmasm/ExpressionClasses.cpp @@ -181,7 +181,7 @@ string ExpressionClasses::fullDAGToString(ExpressionClasses::Id _id) const return str.str(); } -ExpressionClasses::Id ExpressionClasses::tryToSimplify(Expression const& _expr, bool _secondRun) +ExpressionClasses::Id ExpressionClasses::tryToSimplify(Expression const& _expr) { static Rules rules; @@ -205,13 +205,6 @@ ExpressionClasses::Id ExpressionClasses::tryToSimplify(Expression const& _expr, return rebuildExpression(ExpressionTemplate(std::get<1>(*match)(), _expr.item->location())); } - if (!_secondRun && _expr.arguments.size() == 2 && SemanticInformation::isCommutativeOperation(*_expr.item)) - { - Expression expr = _expr; - swap(expr.arguments[0], expr.arguments[1]); - return tryToSimplify(expr, true); - } - return -1; } -- cgit v1.2.3 From c961a3079dda8735363872cdb84c489d61846003 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 6 Feb 2018 12:20:00 +0100 Subject: Turn simplification rule tuple into struct. --- libevmasm/ExpressionClasses.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libevmasm/ExpressionClasses.cpp') diff --git a/libevmasm/ExpressionClasses.cpp b/libevmasm/ExpressionClasses.cpp index 3825f5ed..69b33ec5 100644 --- a/libevmasm/ExpressionClasses.cpp +++ b/libevmasm/ExpressionClasses.cpp @@ -202,7 +202,7 @@ ExpressionClasses::Id ExpressionClasses::tryToSimplify(Expression const& _expr) //cout << "with rule " << match->first.toString() << endl; //ExpressionTemplate t(match->second()); //cout << "to " << match->second().toString() << endl; - return rebuildExpression(ExpressionTemplate(std::get<1>(*match)(), _expr.item->location())); + return rebuildExpression(ExpressionTemplate(match->action(), _expr.item->location())); } return -1; -- cgit v1.2.3