retdec
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
retdec::llvmir2hll::ArithmExprEvaluator Class Referenceabstract

A base class for all evaluators. More...

#include <arithm_expr_evaluator.h>

Inheritance diagram for retdec::llvmir2hll::ArithmExprEvaluator:
Inheritance graph
[legend]
Collaboration diagram for retdec::llvmir2hll::ArithmExprEvaluator:
Collaboration graph
[legend]

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< Constantevaluate (ShPtr< Expression > expr)
 Evaluate an expr. More...
 
ShPtr< Constantevaluate (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< ConstFloatperformOperationOverApFloat (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< ConstFloatperformOperationOverApFloat (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< ConstIntperformOperationOverApInt (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< ConstIntperformOperationOverApInt (const std::optional< ConstIntPair > &constIntPair, LLVMAPIntAPIntOp op)
 Perform the operation specified by op on the first and the second operand in constIntPair. More...
 
ShPtr< ConstBoolperformOperationOverApInt (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< ConstantgetOperandForUnaryOpAndResolveTypes ()
 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
 
- Private Member Functions inherited from retdec::llvmir2hll::OrderedAllVisitor
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...
 
- Private Member Functions inherited from retdec::llvmir2hll::Visitor
virtual ~Visitor ()=default
 
 Visitor ()=default
 
- Private Member Functions inherited from retdec::utils::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Private Attributes

const VarConstMapvarValues
 Map of constants that substitute variables in evaluation. More...
 
ConstStack stackOfResults
 Stack of results during the evaluation. More...
 
- Private Attributes inherited from retdec::llvmir2hll::OrderedAllVisitor
ShPtr< StatementlastStmt
 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...
 

Detailed Description

A base class for all evaluators.

A concrete evaluator should

Member Typedef Documentation

◆ APFloatPair

using retdec::llvmir2hll::ArithmExprEvaluator::APFloatPair = std::pair<llvm::APFloat, llvm::APFloat>

Pair of llvm::APFloat.

◆ APSIntPair

using retdec::llvmir2hll::ArithmExprEvaluator::APSIntPair = std::pair<llvm::APSInt, llvm::APSInt>

Pair of llvm::APSInt.

◆ ConstBoolPair

Pair of bool constants.

◆ ConstFloatPair

Pair of float constants.

◆ ConstIntPair

Pair of integer constants.

◆ ConstPair

Pair of constants.

◆ ConstStack

Stack of constats.

◆ LLVMAPFloatOp

using retdec::llvmir2hll::ArithmExprEvaluator::LLVMAPFloatOp = llvm::APFloat::opStatus (llvm::APFloat::*)( const llvm::APFloat &, llvm::APFloat::roundingMode)
private

◆ LLVMAPFloatOpNoRounding

using retdec::llvmir2hll::ArithmExprEvaluator::LLVMAPFloatOpNoRounding = llvm::APFloat::opStatus (llvm::APFloat::*)( const llvm::APFloat &)
private

◆ LLVMAPIntAPIntBoolOp

using retdec::llvmir2hll::ArithmExprEvaluator::LLVMAPIntAPIntBoolOp = llvm::APInt (llvm::APInt::*)( const llvm::APInt &, bool &) const
private

◆ LLVMAPIntAPIntOp

using retdec::llvmir2hll::ArithmExprEvaluator::LLVMAPIntAPIntOp = llvm::APInt (llvm::APInt::*)( const llvm::APInt &) const
private

◆ LLVMBoolAPIntOp

using retdec::llvmir2hll::ArithmExprEvaluator::LLVMBoolAPIntOp = bool (llvm::APInt::*)( const llvm::APInt &) const
private

◆ VarConstMap

Mapping of variables to constants.

Constructor & Destructor Documentation

◆ ArithmExprEvaluator()

retdec::llvmir2hll::ArithmExprEvaluator::ArithmExprEvaluator ( )
protecteddefault

Member Function Documentation

◆ castConstPair()

template<typename ConstType >
std::optional< std::pair< ShPtr< ConstType >, ShPtr< ConstType > > > retdec::llvmir2hll::ArithmExprEvaluator::castConstPair ( const ConstPair constPair)
static

Casts the constants in constPair to the given type.

Template Parameters
ConstTypeType of the constants after the cast.
Returns
A pair of casted constants if the cast was correct, std::nullopt otherwise.

◆ evaluate() [1/2]

ShPtr< Constant > retdec::llvmir2hll::ArithmExprEvaluator::evaluate ( ShPtr< Expression expr)

Evaluate an expr.

Parameters
[in]exprAn expression to evaluation.
Returns
If exr can be evaluated, returns evaluated Constant, otherwise the null pointer.

◆ evaluate() [2/2]

ShPtr< Constant > retdec::llvmir2hll::ArithmExprEvaluator::evaluate ( ShPtr< Expression expr,
const VarConstMap varValues 
)

Evaluate an expr.

Parameters
[in]exprAn expression to evaluation.
[in]varValuesMap of constants to substitute the variables in expr.
Returns
If exr can be evaluated, returns evaluated Constant, otherwise the null pointer.

◆ getAPFloatsFromConstants()

ArithmExprEvaluator::APFloatPair retdec::llvmir2hll::ArithmExprEvaluator::getAPFloatsFromConstants ( const std::optional< ConstFloatPair > &  constFloatPair)
staticprotected

Create APFloatPair from constFloatPair and return it.

Parameters
[in]constFloatPairA pair of ConstFloat.
Returns
Created pair of llvm::APFloat.

◆ getAPSIntsFromConstants()

ArithmExprEvaluator::APSIntPair retdec::llvmir2hll::ArithmExprEvaluator::getAPSIntsFromConstants ( const std::optional< ConstIntPair > &  constIntPair)
staticprotected

Create APSIntPair from constIntPair and return it.

Parameters
[in]constIntPairA pair of ConstInt.
Returns
Created pair of llvm::APSInt.

◆ getId()

virtual std::string retdec::llvmir2hll::ArithmExprEvaluator::getId ( ) const
pure virtual

Returns the ID of the optimizer.

Implemented in retdec::llvmir2hll::StrictArithmExprEvaluator, and retdec::llvmir2hll::CArithmExprEvaluator.

◆ getOperandForUnaryOpAndResolveTypes()

ShPtr< Constant > retdec::llvmir2hll::ArithmExprEvaluator::getOperandForUnaryOpAndResolveTypes ( )
private

Get operand from stackOfResults and call resolve types method that is implemented in sub-evaluators.

Returns
Constant operand after types corrections.

◆ getOperandsForBinaryOpAndResolveTypes()

ArithmExprEvaluator::ConstPair retdec::llvmir2hll::ArithmExprEvaluator::getOperandsForBinaryOpAndResolveTypes ( )
private

Get operands from stackOfResults and call resolve types method that is implemented in sub-evaluators.

Returns
A pair of constant operands after types corrections.

◆ isConstantZero()

bool retdec::llvmir2hll::ArithmExprEvaluator::isConstantZero ( ShPtr< Constant constant)
staticprotected

Return if constant is a ConstInt or a ConstFloat zero.

Parameters
[in]constantA constant to check.
Returns
If constant is ConstInt or ConstFloat zero.

◆ performOperationOverApFloat() [1/3]

llvm::APFloat::cmpResult retdec::llvmir2hll::ArithmExprEvaluator::performOperationOverApFloat ( const std::optional< ConstFloatPair > &  constFloatPair)
private

Perform the compare operation on the first and the second operand in constFloatPair.

Parameters
[in]constFloatPairA pair of ConstFloat operands.
Returns
Result of operation.

◆ performOperationOverApFloat() [2/3]

ShPtr< ConstFloat > retdec::llvmir2hll::ArithmExprEvaluator::performOperationOverApFloat ( const std::optional< ConstFloatPair > &  constFloatPair,
LLVMAPFloatOp  op,
llvm::APFloat::opStatus &  status 
)
private

Perform the operation specified by op on the first and the second operand in constFloatPair.

op are functions with prototype like:

opStatus add(const APFloat &, roundingMode);
Parameters
[in]constFloatPairA pair of ConstFloat operands.
[in]opOperation to do on constFloatPair operands.
[out]statusStatus of success of operation.
Returns
Result of operation.

◆ performOperationOverApFloat() [3/3]

ShPtr< ConstFloat > retdec::llvmir2hll::ArithmExprEvaluator::performOperationOverApFloat ( const std::optional< ConstFloatPair > &  constFloatPair,
LLVMAPFloatOpNoRounding  op,
llvm::APFloat::opStatus &  status 
)
private

An overload of performOperationOverApFloat() when the operation has no rounding mode.

◆ performOperationOverApInt() [1/3]

ShPtr< ConstInt > retdec::llvmir2hll::ArithmExprEvaluator::performOperationOverApInt ( const std::optional< ConstIntPair > &  constIntPair,
LLVMAPIntAPIntBoolOp  op,
bool &  overflow 
)
private

Perform the operation specified by op on the first and the second operand in constIntPair.

op are functions with prototype like:

APInt sadd_ov(const APInt &RHS,
bool &Overflow) const.
Parameters
[in]constIntPairA pair of ConstInt operands.
[in]opOperation to do on constIntPair operands.
[out]overflowOverflow status of operation.
Returns
Result of operation.

◆ performOperationOverApInt() [2/3]

ShPtr< ConstInt > retdec::llvmir2hll::ArithmExprEvaluator::performOperationOverApInt ( const std::optional< ConstIntPair > &  constIntPair,
LLVMAPIntAPIntOp  op 
)
private

Perform the operation specified by op on the first and the second operand in constIntPair.

op are functions with prototype like:

APInt And(const APInt &RHS) const;
Parameters
[in]constIntPairA pair of ConstInt operands.
[in]opOperation to do on constIntPair operands.
Returns
Result of operation.

◆ performOperationOverApInt() [3/3]

ShPtr< ConstBool > retdec::llvmir2hll::ArithmExprEvaluator::performOperationOverApInt ( const std::optional< ConstIntPair > &  constIntPair,
LLVMBoolAPIntOp  op 
)
private

Perform the operation specified by op on the first and the second operand in constIntPair.

op are functions with prototype like:

bool sgt(uint64_t RHS) const;
Parameters
[in]constIntPairA pair of ConstInt operands.
[in]opOperation to do on constIntPair operands.
Returns
Result of operation.

◆ resolveCast() [1/5]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveCast ( ShPtr< BitCastExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveCast() [2/5]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveCast ( ShPtr< ExtCastExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveCast() [3/5]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveCast ( ShPtr< FPToIntCastExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveCast() [4/5]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveCast ( ShPtr< IntToFPCastExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveCast() [5/5]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveCast ( ShPtr< TruncCastExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveOpSpecifications() [1/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< AddOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [2/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< AndOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [3/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< BitAndOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [4/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< BitOrOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [5/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< BitShlOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [6/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< BitShrOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [7/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< BitXorOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [8/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< DivOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [9/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< EqOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [10/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< GtEqOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [11/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< GtOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [12/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< LtEqOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [13/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< LtOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [14/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< ModOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [15/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< MulOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [16/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< NegOpExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveOpSpecifications() [17/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< NeqOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [18/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< NotOpExpr expr,
ShPtr< Constant > &  constant 
)
privatevirtual

◆ resolveOpSpecifications() [19/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< OrOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOpSpecifications() [20/20]

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOpSpecifications ( ShPtr< SubOpExpr expr,
ConstPair constPair 
)
privatevirtual

◆ resolveOverflowForAPFloat()

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOverflowForAPFloat ( llvm::APFloat::opStatus  opStatus)
privatevirtual

◆ resolveOverflowForAPInt()

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOverflowForAPInt ( bool  overflow)
privatevirtual

◆ resolveOverflows()

void retdec::llvmir2hll::ArithmExprEvaluator::resolveOverflows ( bool  overflow,
llvm::APFloat::opStatus  opStatus 
)
private

Call resolve methods for overflow.

Parameters
[in]overflowOverflow status after operation on llvm::APInt.
[in]opStatusStatus after operation on llvm::APFloat.

◆ resolveTypesBinaryOp()

void retdec::llvmir2hll::ArithmExprEvaluator::resolveTypesBinaryOp ( ConstPair constPair)
privatevirtual

◆ resolveTypesUnaryOp()

void retdec::llvmir2hll::ArithmExprEvaluator::resolveTypesUnaryOp ( ShPtr< Constant > &  operand)
privatevirtual

◆ toBool()

std::optional< bool > retdec::llvmir2hll::ArithmExprEvaluator::toBool ( ShPtr< Expression expr,
VarConstMap  varValues = VarConstMap() 
)
virtual

Evaluate expr and return if result is bool.

Parameters
[in]exprAn expression to evaluate.
[in]varValuesMap of constants to substitute the variables in expr.
Returns
Bool value if the expr after evaluation is bool, std::nullopt<bool>() otherwise.

◆ visit() [1/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [2/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< AddOpExpr expr)
overrideprivatevirtual

◆ visit() [3/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [4/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< AddressOpExpr expr)
overrideprivatevirtual

◆ visit() [5/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [6/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< AndOpExpr expr)
overrideprivatevirtual

◆ visit() [7/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [8/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ArrayIndexOpExpr expr)
overrideprivatevirtual

◆ visit() [9/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [10/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [11/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [12/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [13/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< BitAndOpExpr expr)
overrideprivatevirtual

◆ visit() [14/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [15/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< BitCastExpr expr)
overrideprivatevirtual

◆ visit() [16/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [17/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< BitOrOpExpr expr)
overrideprivatevirtual

◆ visit() [18/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [19/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< BitShlOpExpr expr)
overrideprivatevirtual

◆ visit() [20/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [21/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< BitShrOpExpr expr)
overrideprivatevirtual

◆ visit() [22/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [23/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< BitXorOpExpr expr)
overrideprivatevirtual

◆ visit() [24/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [25/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [26/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< CallExpr expr)
overrideprivatevirtual

◆ visit() [27/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [28/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [29/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [30/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstArray constant)
overrideprivatevirtual

◆ visit() [31/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [32/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstBool constant)
overrideprivatevirtual

◆ visit() [33/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [34/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstFloat constant)
overrideprivatevirtual

◆ visit() [35/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [36/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstInt constant)
overrideprivatevirtual

◆ visit() [37/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [38/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstNullPointer constant)
overrideprivatevirtual

◆ visit() [39/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [40/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstString constant)
overrideprivatevirtual

◆ visit() [41/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [42/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstStruct constant)
overrideprivatevirtual

◆ visit() [43/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [44/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ConstSymbol constant)
overrideprivatevirtual

◆ visit() [45/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [46/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [47/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< DerefOpExpr expr)
overrideprivatevirtual

◆ visit() [48/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [49/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< DivOpExpr expr)
overrideprivatevirtual

◆ visit() [50/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [51/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [52/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< EqOpExpr expr)
overrideprivatevirtual

◆ visit() [53/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [54/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ExtCastExpr expr)
overrideprivatevirtual

◆ visit() [55/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [56/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [57/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [58/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< FPToIntCastExpr expr)
overrideprivatevirtual

◆ visit() [59/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [60/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [61/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [62/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [63/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [64/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< GtEqOpExpr expr)
overrideprivatevirtual

◆ visit() [65/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [66/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< GtOpExpr expr)
overrideprivatevirtual

◆ visit() [67/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [68/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [69/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< IntToFPCastExpr expr)
overrideprivatevirtual

◆ visit() [70/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [71/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< IntToPtrCastExpr expr)
overrideprivatevirtual

◆ visit() [72/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [73/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [74/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< LtEqOpExpr expr)
overrideprivatevirtual

◆ visit() [75/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [76/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< LtOpExpr expr)
overrideprivatevirtual

◆ visit() [77/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [78/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< ModOpExpr expr)
overrideprivatevirtual

◆ visit() [79/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [80/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< MulOpExpr expr)
overrideprivatevirtual

◆ visit() [81/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [82/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< NegOpExpr expr)
overrideprivatevirtual

◆ visit() [83/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [84/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< NeqOpExpr expr)
overrideprivatevirtual

◆ visit() [85/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [86/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< NotOpExpr expr)
overrideprivatevirtual

◆ visit() [87/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [88/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< OrOpExpr expr)
overrideprivatevirtual

◆ visit() [89/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [90/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [91/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< PtrToIntCastExpr expr)
overrideprivatevirtual

◆ visit() [92/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [93/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [94/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [95/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< StructIndexOpExpr expr)
overrideprivatevirtual

◆ visit() [96/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [97/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [98/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< SubOpExpr expr)
overrideprivatevirtual

◆ visit() [99/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [100/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [101/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< TernaryOpExpr expr)
overrideprivatevirtual

◆ visit() [102/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [103/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< TruncCastExpr expr)
overrideprivatevirtual

◆ visit() [104/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [105/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [106/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [107/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [108/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [109/111]

void retdec::llvmir2hll::ArithmExprEvaluator::visit ( ShPtr< Variable var)
overrideprivatevirtual

◆ visit() [110/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [111/111]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

Member Data Documentation

◆ canBeEvaluated

bool retdec::llvmir2hll::ArithmExprEvaluator::canBeEvaluated = true
protected

Signalizes if evaluation can go on.

◆ stackOfResults

ConstStack retdec::llvmir2hll::ArithmExprEvaluator::stackOfResults
private

Stack of results during the evaluation.

◆ varValues

const VarConstMap* retdec::llvmir2hll::ArithmExprEvaluator::varValues
private

Map of constants that substitute variables in evaluation.


The documentation for this class was generated from the following files: