aboutsummaryrefslogtreecommitdiffstats
path: root/libyul/optimiser/Utilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libyul/optimiser/Utilities.cpp')
-rw-r--r--libyul/optimiser/Utilities.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/libyul/optimiser/Utilities.cpp b/libyul/optimiser/Utilities.cpp
index b8cdd339..b3b580d5 100644
--- a/libyul/optimiser/Utilities.cpp
+++ b/libyul/optimiser/Utilities.cpp
@@ -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);
+}