8 #ifndef RETDEC_LLVMIR2HLL_OPTIMIZER_OPTIMIZERS_BIT_OP_TO_LOG_OP_OPTIMIZER_H
9 #define RETDEC_LLVMIR2HLL_OPTIMIZER_OPTIMIZERS_BIT_OP_TO_LOG_OP_OPTIMIZER_H
106 virtual std::string
getId()
const override {
return "BitOpToLogOp"; }
Optimizes Optimizes BitAndExpr to AndOpExpr or BitOrExpr to OrOpExpr if fulfil conditions.
Definition: bit_op_to_log_op_optimizer.h:102
bool canBeBitOrBitAndOptimized(ShPtr< Expression > expr)
Function checks if expr has an array access or has a call or has a derefs or has a divide with zero.
Definition: bit_op_to_log_op_optimizer.cpp:163
virtual std::string getId() const override
Returns the ID of the optimizer.
Definition: bit_op_to_log_op_optimizer.h:106
bool isPotentionalProblem
A variable for check if is some chance to divide by zero.
Definition: bit_op_to_log_op_optimizer.h:136
bool isCondition
A variable for check if we are in some condition.
Definition: bit_op_to_log_op_optimizer.h:133
bool isPotentionalModProblem(ShPtr< Expression > expr)
Function checks if a expr is ConstInt or ConstFloat zero.
Definition: bit_op_to_log_op_optimizer.cpp:232
void tryOptimizeCond(ShPtr< Expression > expr)
This function try optimize on conditions.
Definition: bit_op_to_log_op_optimizer.cpp:307
bool isPotentionalDivProblem(ShPtr< DivOpExpr > divOpExpr)
Function checks if divOpExpr can cause problem in optimization.
Definition: bit_op_to_log_op_optimizer.cpp:189
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
ShPtr< ValueAnalysis > va
Analysis of values.
Definition: bit_op_to_log_op_optimizer.h:130
BitOpToLogOpOptimizer(ShPtr< Module > module, ShPtr< ValueAnalysis > va)
Constructs a new optimizer.
Definition: bit_op_to_log_op_optimizer.cpp:36
bool isPotentionalMulProblem(ShPtr< MulOpExpr > mulOpExpr)
Function checks if mulOpExpr can cause problem in optimization.
Definition: bit_op_to_log_op_optimizer.cpp:257
A base class of all function optimizers.
Definition: func_optimizer.h:44
ShPtr< Module > module
The module that is being optimized.
Definition: optimizer.h:79
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
A base class of all function optimizers.
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
Declarations, aliases, macros, etc. for the use of smart pointers.