7 #ifndef RETDEC_LLVMIR2HLL_EVALUATOR_ARITHM_EXPR_EVALUATORS_STRICT_ARITHM_EXPR_EVALUATOR_H
8 #define RETDEC_LLVMIR2HLL_EVALUATOR_ARITHM_EXPR_EVALUATORS_STRICT_ARITHM_EXPR_EVALUATOR_H
28 virtual std::string
getId()
const override;
59 llvm::APFloat::opStatus opStatus)
override;
A base class for all evaluators.
A base class for all evaluators.
Definition: arithm_expr_evaluator.h:37
std::pair< ShPtr< Constant >, ShPtr< Constant > > ConstPair
Pair of constants.
Definition: arithm_expr_evaluator.h:55
Evaluates expressions with strict conditions.
Definition: strict_arithm_expr_evaluator.h:24
virtual void resolveTypesBinaryOp(ConstPair &constPair) override
Resolve types of operands in binary operations.
Definition: strict_arithm_expr_evaluator.cpp:39
virtual void resolveCast(ShPtr< BitCastExpr > expr, ShPtr< Constant > &constant) override
Definition: strict_arithm_expr_evaluator.cpp:98
static ShPtr< ArithmExprEvaluator > create()
Creates a new StrictArithmExprEvaluator.
Definition: strict_arithm_expr_evaluator.cpp:26
virtual std::string getId() const override
Returns the ID of the optimizer.
Definition: strict_arithm_expr_evaluator.cpp:30
virtual void resolveOverflowForAPFloat(llvm::APFloat::opStatus opStatus) override
Stop evaluation if overflow occurred.
Definition: strict_arithm_expr_evaluator.cpp:137
StrictArithmExprEvaluator()=default
virtual void resolveOverflowForAPInt(bool overflow) override
Stop evaluation if overflow occurred.
Definition: strict_arithm_expr_evaluator.cpp:128
virtual void resolveOpSpecifications(ShPtr< DivOpExpr > expr, ConstPair &constPair) override
Definition: strict_arithm_expr_evaluator.cpp:55
A library providing API for working with back-end IR.
std::shared_ptr< T > ShPtr
An alias for a shared pointer.
Definition: smart_ptr.h:18
Definition: archive_wrapper.h:19