retdec
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
retdec::bin2llvmir::CondBranchOpt Class Reference

#include <cond_branch_opt.h>

Inheritance diagram for retdec::bin2llvmir::CondBranchOpt:
Inheritance graph
[legend]
Collaboration diagram for retdec::bin2llvmir::CondBranchOpt:
Collaboration graph
[legend]

Public Member Functions

 CondBranchOpt ()
 
virtual bool runOnModule (llvm::Module &m) override
 
bool runOnModuleCustom (llvm::Module &m, Config *c, Abi *abi)
 

Static Public Attributes

static char ID = 0
 

Private Member Functions

bool run ()
 
bool runOnInstruction (ReachingDefinitionsAnalysis &RDA, llvm::Instruction &i)
 
bool transformConditionSub (llvm::BranchInst *br, llvm::Value *testedVal, llvm::Value *subVal, llvm::Instruction *binOp, llvm::CmpInst::Predicate predicate)
 

Private Attributes

llvm::Module * _module = nullptr
 
Config_config = nullptr
 
Abi_abi = nullptr
 
std::unordered_set< llvm::Value * > _toRemove
 

Detailed Description

InstructionOptimizer pass (-inst-opt) MUST run before this pass. We need the following transformations to match more patterns:

Constructor & Destructor Documentation

◆ CondBranchOpt()

retdec::bin2llvmir::CondBranchOpt::CondBranchOpt ( )

Member Function Documentation

◆ run()

bool retdec::bin2llvmir::CondBranchOpt::run ( )
private

◆ runOnInstruction()

bool retdec::bin2llvmir::CondBranchOpt::runOnInstruction ( ReachingDefinitionsAnalysis RDA,
llvm::Instruction &  i 
)
private

◆ runOnModule()

bool retdec::bin2llvmir::CondBranchOpt::runOnModule ( llvm::Module &  m)
overridevirtual

◆ runOnModuleCustom()

bool retdec::bin2llvmir::CondBranchOpt::runOnModuleCustom ( llvm::Module &  m,
Config c,
Abi abi 
)

◆ transformConditionSub()

bool retdec::bin2llvmir::CondBranchOpt::transformConditionSub ( llvm::BranchInst *  br,
llvm::Value *  testedVal,
llvm::Value *  subVal,
llvm::Instruction *  binOp,
llvm::CmpInst::Predicate  predicate 
)
private

Member Data Documentation

◆ _abi

Abi* retdec::bin2llvmir::CondBranchOpt::_abi = nullptr
private

◆ _config

Config* retdec::bin2llvmir::CondBranchOpt::_config = nullptr
private

◆ _module

llvm::Module* retdec::bin2llvmir::CondBranchOpt::_module = nullptr
private

◆ _toRemove

std::unordered_set<llvm::Value*> retdec::bin2llvmir::CondBranchOpt::_toRemove
private

◆ ID

char retdec::bin2llvmir::CondBranchOpt::ID = 0
static

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