retdec
|
A base class for all evaluators. More...
#include <arithm_expr_evaluator.h>
Public Types | |
using | APSIntPair = std::pair< llvm::APSInt, llvm::APSInt > |
Pair of llvm::APSInt . More... | |
using | APFloatPair = std::pair< llvm::APFloat, llvm::APFloat > |
Pair of llvm::APFloat . More... | |
using | ConstIntPair = std::pair< ShPtr< ConstInt >, ShPtr< ConstInt > > |
Pair of integer constants. More... | |
using | ConstFloatPair = std::pair< ShPtr< ConstFloat >, ShPtr< ConstFloat > > |
Pair of float constants. More... | |
using | ConstBoolPair = std::pair< ShPtr< ConstBool >, ShPtr< ConstBool > > |
Pair of bool constants. More... | |
using | ConstPair = std::pair< ShPtr< Constant >, ShPtr< Constant > > |
Pair of constants. More... | |
using | ConstStack = std::stack< ShPtr< Constant > > |
Stack of constats. More... | |
using | VarConstMap = std::map< ShPtr< Variable >, ShPtr< Constant > > |
Mapping of variables to constants. More... | |
Public Member Functions | |
virtual std::string | getId () const =0 |
Returns the ID of the optimizer. More... | |
virtual std::optional< bool > | toBool (ShPtr< Expression > expr, VarConstMap varValues=VarConstMap()) |
Evaluate expr and return if result is bool . More... | |
ShPtr< Constant > | evaluate (ShPtr< Expression > expr) |
Evaluate an expr. More... | |
ShPtr< Constant > | evaluate (ShPtr< Expression > expr, const VarConstMap &varValues) |
Evaluate an expr. More... | |
Static Public Member Functions | |
template<typename ConstType > | |
static std::optional< std::pair< ShPtr< ConstType >, ShPtr< ConstType > > > | castConstPair (const ConstPair &constPair) |
Casts the constants in constPair to the given type. More... | |
Protected Member Functions | |
ArithmExprEvaluator ()=default | |
Static Protected Member Functions | |
static APSIntPair | getAPSIntsFromConstants (const std::optional< ConstIntPair > &constIntPair) |
Create APSIntPair from constIntPair and return it. More... | |
static APFloatPair | getAPFloatsFromConstants (const std::optional< ConstFloatPair > &ConstFloatPair) |
Create APFloatPair from constFloatPair and return it. More... | |
static bool | isConstantZero (ShPtr< Constant > constant) |
Return if constant is a ConstInt or a ConstFloat zero. More... | |
Protected Attributes | |
bool | canBeEvaluated = true |
Signalizes if evaluation can go on. More... | |
Private Types | |
using | LLVMAPIntAPIntBoolOp = llvm::APInt(llvm::APInt::*)(const llvm::APInt &, bool &) const |
using | LLVMBoolAPIntOp = bool(llvm::APInt::*)(const llvm::APInt &) const |
using | LLVMAPIntAPIntOp = llvm::APInt(llvm::APInt::*)(const llvm::APInt &) const |
using | LLVMAPFloatOp = llvm::APFloat::opStatus(llvm::APFloat::*)(const llvm::APFloat &, llvm::APFloat::roundingMode) |
using | LLVMAPFloatOpNoRounding = llvm::APFloat::opStatus(llvm::APFloat::*)(const llvm::APFloat &) |
Private Member Functions | |
virtual void | resolveTypesUnaryOp (ShPtr< Constant > &operand) |
virtual void | resolveTypesBinaryOp (ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< AddOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< AndOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< BitAndOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< BitOrOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< BitShlOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< BitShrOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< BitXorOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< DivOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< EqOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< GtEqOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< GtOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< LtEqOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< LtOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< ModOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< MulOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< NegOpExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveOpSpecifications (ShPtr< NeqOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< NotOpExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveOpSpecifications (ShPtr< OrOpExpr > expr, ConstPair &constPair) |
virtual void | resolveOpSpecifications (ShPtr< SubOpExpr > expr, ConstPair &constPair) |
virtual void | resolveCast (ShPtr< BitCastExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveCast (ShPtr< ExtCastExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveCast (ShPtr< FPToIntCastExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveCast (ShPtr< IntToFPCastExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveCast (ShPtr< TruncCastExpr > expr, ShPtr< Constant > &constant) |
virtual void | resolveOverflowForAPInt (bool overflow) |
virtual void | resolveOverflowForAPFloat (llvm::APFloat::opStatus opStatus) |
ShPtr< ConstFloat > | performOperationOverApFloat (const std::optional< ConstFloatPair > &constFloatPair, LLVMAPFloatOp op, llvm::APFloat::opStatus &status) |
Perform the operation specified by op on the first and the second operand in constFloatPair. More... | |
ShPtr< ConstFloat > | performOperationOverApFloat (const std::optional< ConstFloatPair > &constFloatPair, LLVMAPFloatOpNoRounding op, llvm::APFloat::opStatus &status) |
An overload of performOperationOverApFloat() when the operation has no rounding mode. More... | |
llvm::APFloat::cmpResult | performOperationOverApFloat (const std::optional< ConstFloatPair > &constFloatPair) |
Perform the compare operation on the first and the second operand in constFloatPair. More... | |
ShPtr< ConstInt > | performOperationOverApInt (const std::optional< ConstIntPair > &constIntPair, LLVMAPIntAPIntBoolOp op, bool &overflow) |
Perform the operation specified by op on the first and the second operand in constIntPair. More... | |
ShPtr< ConstInt > | performOperationOverApInt (const std::optional< ConstIntPair > &constIntPair, LLVMAPIntAPIntOp op) |
Perform the operation specified by op on the first and the second operand in constIntPair. More... | |
ShPtr< ConstBool > | performOperationOverApInt (const std::optional< ConstIntPair > &constIntPair, LLVMBoolAPIntOp op) |
Perform the operation specified by op on the first and the second operand in constIntPair. More... | |
ConstPair | getOperandsForBinaryOpAndResolveTypes () |
Get operands from stackOfResults and call resolve types method that is implemented in sub-evaluators. More... | |
ShPtr< Constant > | getOperandForUnaryOpAndResolveTypes () |
Get operand from stackOfResults and call resolve types method that is implemented in sub-evaluators. More... | |
void | resolveOverflows (bool overflow, llvm::APFloat::opStatus opStatus) |
Call resolve methods for overflow. More... | |
virtual void | visit (ShPtr< GlobalVarDef > varDef) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
Visitor Interface | |
virtual void | visit (ShPtr< AddOpExpr > expr) override |
virtual void | visit (ShPtr< AddressOpExpr > expr) override |
virtual void | visit (ShPtr< AndOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayIndexOpExpr > expr) override |
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
virtual void | visit (ShPtr< BitShrOpExpr > expr) override |
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
virtual void | visit (ShPtr< CallExpr > expr) override |
virtual void | visit (ShPtr< DerefOpExpr > expr) override |
virtual void | visit (ShPtr< DivOpExpr > expr) override |
virtual void | visit (ShPtr< EqOpExpr > expr) override |
virtual void | visit (ShPtr< GtEqOpExpr > expr) override |
virtual void | visit (ShPtr< GtOpExpr > expr) override |
virtual void | visit (ShPtr< LtEqOpExpr > expr) override |
virtual void | visit (ShPtr< LtOpExpr > expr) override |
virtual void | visit (ShPtr< ModOpExpr > expr) override |
virtual void | visit (ShPtr< MulOpExpr > expr) override |
virtual void | visit (ShPtr< NegOpExpr > expr) override |
virtual void | visit (ShPtr< NeqOpExpr > expr) override |
virtual void | visit (ShPtr< NotOpExpr > expr) override |
virtual void | visit (ShPtr< OrOpExpr > expr) override |
virtual void | visit (ShPtr< StructIndexOpExpr > expr) override |
virtual void | visit (ShPtr< SubOpExpr > expr) override |
virtual void | visit (ShPtr< TernaryOpExpr > expr) override |
virtual void | visit (ShPtr< Variable > var) override |
virtual void | visit (ShPtr< BitCastExpr > expr) override |
virtual void | visit (ShPtr< ExtCastExpr > expr) override |
virtual void | visit (ShPtr< FPToIntCastExpr > expr) override |
virtual void | visit (ShPtr< IntToFPCastExpr > expr) override |
virtual void | visit (ShPtr< IntToPtrCastExpr > expr) override |
virtual void | visit (ShPtr< PtrToIntCastExpr > expr) override |
virtual void | visit (ShPtr< TruncCastExpr > expr) override |
virtual void | visit (ShPtr< ConstArray > constant) override |
virtual void | visit (ShPtr< ConstBool > constant) override |
virtual void | visit (ShPtr< ConstFloat > constant) override |
virtual void | visit (ShPtr< ConstInt > constant) override |
virtual void | visit (ShPtr< ConstNullPointer > constant) override |
virtual void | visit (ShPtr< ConstString > constant) override |
virtual void | visit (ShPtr< ConstStruct > constant) override |
virtual void | visit (ShPtr< ConstSymbol > constant) override |
![]() | |
virtual void | visit (ShPtr< GlobalVarDef > varDef) override |
virtual void | visit (ShPtr< Function > func) override |
virtual void | visit (ShPtr< AssignStmt > stmt) override |
virtual void | visit (ShPtr< BreakStmt > stmt) override |
virtual void | visit (ShPtr< CallStmt > stmt) override |
virtual void | visit (ShPtr< ContinueStmt > stmt) override |
virtual void | visit (ShPtr< EmptyStmt > stmt) override |
virtual void | visit (ShPtr< ForLoopStmt > stmt) override |
virtual void | visit (ShPtr< UForLoopStmt > stmt) override |
virtual void | visit (ShPtr< GotoStmt > stmt) override |
virtual void | visit (ShPtr< IfStmt > stmt) override |
virtual void | visit (ShPtr< ReturnStmt > stmt) override |
virtual void | visit (ShPtr< SwitchStmt > stmt) override |
virtual void | visit (ShPtr< UnreachableStmt > stmt) override |
virtual void | visit (ShPtr< VarDefStmt > stmt) override |
virtual void | visit (ShPtr< WhileLoopStmt > stmt) override |
virtual void | visit (ShPtr< AssignOpExpr > expr) override |
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
virtual void | visit (ShPtr< ArrayType > type) override |
virtual void | visit (ShPtr< FloatType > type) override |
virtual void | visit (ShPtr< IntType > type) override |
virtual void | visit (ShPtr< PointerType > type) override |
virtual void | visit (ShPtr< StringType > type) override |
virtual void | visit (ShPtr< StructType > type) override |
virtual void | visit (ShPtr< FunctionType > type) override |
virtual void | visit (ShPtr< VoidType > type) override |
virtual void | visit (ShPtr< UnknownType > type) override |
OrderedAllVisitor (bool visitSuccessors=true, bool visitNestedStmts=true) | |
Constructs a new visitor. More... | |
virtual void | visitStmt (ShPtr< Statement > stmt, bool visitSuccessors=true, bool visitNestedStmts=true) |
Visits the given statement, and possibly its successors or nested statements. More... | |
void | restart (bool visitSuccessors=true, bool visitNestedStmts=true) |
"Restarts" the visitor so it is in the state like it was when it was created. More... | |
bool | makeAccessedAndCheckIfAccessed (ShPtr< Type > type) |
Makes the given type accessed. More... | |
![]() | |
virtual | ~Visitor ()=default |
Visitor ()=default | |
![]() | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable ()=default | |
~NonCopyable ()=default | |
Private Attributes | |
const VarConstMap * | varValues |
Map of constants that substitute variables in evaluation. More... | |
ConstStack | stackOfResults |
Stack of results during the evaluation. More... | |
![]() | |
ShPtr< Statement > | lastStmt |
Statement that has been accessed as the last one. More... | |
StmtUSet | accessedStmts |
A set of all accessed statements. More... | |
TypeUSet | accessedTypes |
A set of all accessed types. More... | |
bool | visitSuccessors |
Should statements' successor be accessed? More... | |
bool | visitNestedStmts |
Should nested statements be accessed? More... | |
A base class for all evaluators.
A concrete evaluator should
ShPtr<ArithmExprEvaluator> create()
functioncreate
function and the concrete evaluator's ID using retdec::llvmir2hll::ArithmExprEvaluator::APFloatPair = std::pair<llvm::APFloat, llvm::APFloat> |
Pair of llvm::APFloat
.
using retdec::llvmir2hll::ArithmExprEvaluator::APSIntPair = std::pair<llvm::APSInt, llvm::APSInt> |
Pair of llvm::APSInt
.
using retdec::llvmir2hll::ArithmExprEvaluator::ConstBoolPair = std::pair<ShPtr<ConstBool>, ShPtr<ConstBool> > |
Pair of bool constants.
using retdec::llvmir2hll::ArithmExprEvaluator::ConstFloatPair = std::pair<ShPtr<ConstFloat>, ShPtr<ConstFloat> > |
Pair of float constants.
using retdec::llvmir2hll::ArithmExprEvaluator::ConstIntPair = std::pair<ShPtr<ConstInt>, ShPtr<ConstInt> > |
Pair of integer constants.
using retdec::llvmir2hll::ArithmExprEvaluator::ConstPair = std::pair<ShPtr<Constant>, ShPtr<Constant> > |
Pair of constants.
using retdec::llvmir2hll::ArithmExprEvaluator::ConstStack = std::stack<ShPtr<Constant> > |
Stack of constats.
|
private |
|
private |
|
private |
|
private |
|
private |
using retdec::llvmir2hll::ArithmExprEvaluator::VarConstMap = std::map<ShPtr<Variable>, ShPtr<Constant> > |
Mapping of variables to constants.
|
protecteddefault |
|
static |
Casts the constants in constPair to the given type.
ConstType | Type of the constants after the cast. |
std::nullopt
otherwise. ShPtr< Constant > retdec::llvmir2hll::ArithmExprEvaluator::evaluate | ( | ShPtr< Expression > | expr | ) |
Evaluate an expr.
[in] | expr | An expression to evaluation. |
Constant
, otherwise the null pointer. ShPtr< Constant > retdec::llvmir2hll::ArithmExprEvaluator::evaluate | ( | ShPtr< Expression > | expr, |
const VarConstMap & | varValues | ||
) |
Evaluate an expr.
[in] | expr | An expression to evaluation. |
[in] | varValues | Map of constants to substitute the variables in expr. |
Constant
, otherwise the null pointer.
|
staticprotected |
Create APFloatPair
from constFloatPair and return it.
[in] | constFloatPair | A pair of ConstFloat . |
llvm::APFloat
.
|
staticprotected |
Create APSIntPair
from constIntPair and return it.
[in] | constIntPair | A pair of ConstInt . |
llvm::APSInt
.
|
pure virtual |
Returns the ID of the optimizer.
Implemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
private |
Get operand from stackOfResults
and call resolve types method that is implemented in sub-evaluators.
|
private |
Get operands from stackOfResults
and call resolve types method that is implemented in sub-evaluators.
|
staticprotected |
Return if constant is a ConstInt
or a ConstFloat
zero.
[in] | constant | A constant to check. |
ConstInt
or ConstFloat
zero.
|
private |
Perform the compare operation on the first and the second operand in constFloatPair.
[in] | constFloatPair | A pair of ConstFloat operands. |
|
private |
Perform the operation specified by op on the first and the second operand in constFloatPair.
op are functions with prototype like:
[in] | constFloatPair | A pair of ConstFloat operands. |
[in] | op | Operation to do on constFloatPair operands. |
[out] | status | Status of success of operation. |
|
private |
An overload of performOperationOverApFloat()
when the operation has no rounding mode.
|
private |
Perform the operation specified by op on the first and the second operand in constIntPair.
op are functions with prototype like:
[in] | constIntPair | A pair of ConstInt operands. |
[in] | op | Operation to do on constIntPair operands. |
[out] | overflow | Overflow status of operation. |
|
private |
Perform the operation specified by op on the first and the second operand in constIntPair.
op are functions with prototype like:
[in] | constIntPair | A pair of ConstInt operands. |
[in] | op | Operation to do on constIntPair operands. |
|
private |
Perform the operation specified by op on the first and the second operand in constIntPair.
op are functions with prototype like:
[in] | constIntPair | A pair of ConstInt operands. |
[in] | op | Operation to do on constIntPair operands. |
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator.
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator.
|
private |
Call resolve methods for overflow.
[in] | overflow | Overflow status after operation on llvm::APInt . |
[in] | opStatus | Status after operation on llvm::APFloat . |
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.
|
privatevirtual |
Reimplemented in retdec::llvmir2hll::CArithmExprEvaluator.
|
virtual |
Evaluate expr and return if result is bool
.
[in] | expr | An expression to evaluate. |
[in] | varValues | Map of constants to substitute the variables in expr. |
bool
, std::nullopt<bool>()
otherwise.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivatevirtual |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
|
overrideprivate |
Reimplemented from retdec::llvmir2hll::OrderedAllVisitor.
|
overrideprivate |
|
overrideprivate |
|
protected |
Signalizes if evaluation can go on.
|
private |
Stack of results during the evaluation.
|
private |
Map of constants that substitute variables in evaluation.