Add structural simplifier as optimization step for Yul.

This commit is contained in:
Daniel Kirchner
2018-12-06 18:37:35 +01:00
parent 4b2a64306a
commit 1eb60cbb39
19 changed files with 292 additions and 15 deletions
+9
View File
@@ -21,6 +21,7 @@
#include <libyul/optimiser/Utilities.h>
#include <libyul/AsmData.h>
#include <libyul/Exceptions.h>
#include <libdevcore/CommonData.h>
@@ -37,3 +38,11 @@ void yul::removeEmptyBlocks(Block& _block)
};
boost::range::remove_erase_if(_block.statements, isEmptyBlock);
}
u256 yul::valueOfNumberLiteral(Literal const& _literal)
{
assertThrow(_literal.kind == LiteralKind::Number, OptimizerException, "");
std::string const& literalString = _literal.value.str();
assertThrow(isValidDecimal(literalString) || isValidHex(literalString), OptimizerException, "");
return u256(literalString);
}