retdec
idioms_common.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_IDIOMS_IDIOMS_COMMON_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_IDIOMS_IDIOMS_COMMON_H
9 
11 
12 namespace retdec {
13 namespace bin2llvmir {
14 
18 class IdiomsCommon: virtual public IdiomsAbstract {
19  friend class IdiomsAnalysis;
20 protected:
21  llvm::Instruction * exchangeDivByMinusTwo(llvm::BasicBlock::iterator iter) const;
22  llvm::Instruction * exchangeUnsignedModulo2n(llvm::BasicBlock::iterator iter) const;
23  llvm::Instruction * exchangeLessThanZero(llvm::BasicBlock::iterator iter) const;
24  llvm::Instruction * exchangeGreaterEqualZero(llvm::BasicBlock::iterator iter) const;
25  llvm::Instruction * exchangeBitShiftSDiv1(llvm::BasicBlock::iterator iter) const;
26  llvm::Instruction * exchangeBitShiftUDiv(llvm::BasicBlock::iterator iter) const;
27  llvm::Instruction * exchangeBitShiftMul(llvm::BasicBlock::iterator iter) const;
28  llvm::Instruction * exchangeSignedModulo2n(llvm::BasicBlock::iterator iter) const;
29 };
30 
31 } // namespace bin2llvmir
32 } // namespace retdec
33 
34 #endif
Instruction idiom analysis abstract class.
Definition: idioms_abstract.h:22
Definition: idioms_analysis.h:41
Common compiler instruction idioms.
Definition: idioms_common.h:18
llvm::Instruction * exchangeGreaterEqualZero(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:75
llvm::Instruction * exchangeLessThanZero(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:48
llvm::Instruction * exchangeUnsignedModulo2n(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:222
llvm::Instruction * exchangeBitShiftUDiv(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:25
llvm::Instruction * exchangeSignedModulo2n(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:299
llvm::Instruction * exchangeBitShiftSDiv1(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:127
llvm::Instruction * exchangeDivByMinusTwo(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:243
llvm::Instruction * exchangeBitShiftMul(llvm::BasicBlock::iterator iter) const
Definition: idioms_common.cpp:199
Instruction idioms analysis abstract class.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19