7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_IDIOMS_IDIOMS_ABSTRACT_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_IDIOMS_IDIOMS_ABSTRACT_H
10 #include <llvm/IR/IRBuilder.h>
11 #include <llvm/IR/Instruction.h>
12 #include <llvm/IR/Module.h>
37 virtual bool doAnalysis(llvm::Function &, llvm::Pass *) = 0;
41 const llvm::Value * val)
const;
Instruction idiom analysis abstract class.
Definition: idioms_abstract.h:22
static bool isPowerOfTwoRepresentable(const llvm::ConstantInt *cnst)
Definition: idioms_abstract.cpp:75
static bool isPowerOfTwo(unsigned x)
Definition: idioms_abstract.cpp:65
CC_arch getArch() const
Definition: idioms_abstract.h:34
CC_compiler getCompiler() const
Definition: idioms_abstract.h:33
void init(llvm::Module *M, CC_compiler cc, CC_arch arch)
Definition: idioms_abstract.cpp:17
llvm::Module * getModule() const
Definition: idioms_abstract.h:35
CC_arch m_arch
Definition: idioms_abstract.h:24
static void eraseInstFromBasicBlock(llvm::Value *val, llvm::BasicBlock *bb)
Definition: idioms_abstract.cpp:49
CC_compiler m_compiler
Definition: idioms_abstract.h:25
IdiomsAbstract()
Definition: idioms_abstract.cpp:14
virtual bool doAnalysis(llvm::Function &, llvm::Pass *)=0
llvm::Module * m_module
Definition: idioms_abstract.h:26
virtual ~IdiomsAbstract()=default
bool findBranchDependingOn(llvm::BranchInst **br, llvm::BasicBlock &bb, const llvm::Value *val) const
Definition: idioms_abstract.cpp:30
Instruction idioms analysis types.
The frontend-end part of the decompiler.
CC_arch
Target architecture.
Definition: idioms_types.h:28
CC_compiler
Compiler type.
Definition: idioms_types.h:16
Definition: archive_wrapper.h:19