retdec
|
#include <simple_types.h>
Public Member Functions | |
SimpleTypesAnalysis () | |
virtual bool | runOnModule (llvm::Module &m) override |
virtual void | getAnalysisUsage (llvm::AnalysisUsage &AU) const override |
Static Public Attributes | |
static char | ID = 0 |
Private Member Functions | |
void | buildEqSets (llvm::Module &M) |
void | buildEquations () |
void | processRoot (llvm::Value *root) |
void | processValue (std::queue< llvm::Value * > &toProcess, EqSet &eqSet) |
void | processUse (llvm::Value *c, llvm::Value *x, std::queue< llvm::Value * > &toProcess, EqSet &eqSet) |
void | eraseObsoleteInstructions () |
void | setGlobalConstants () |
Private Attributes | |
ValueMap | processedObjs |
EqSetContainer | eqSets |
ValuePairList | val2PtrVal |
ReachingDefinitionsAnalysis | RDA |
llvm::Module * | module = nullptr |
const llvm::GlobalVariable * | _specialGlobal = nullptr |
Config * | config = nullptr |
FileImage * | objf = nullptr |
std::unordered_set< llvm::Instruction * > | instToErase |
Simple data type analysis.
retdec::bin2llvmir::SimpleTypesAnalysis::SimpleTypesAnalysis | ( | ) |
|
private |
|
private |
|
private |
|
overridevirtual |
|
private |
|
private |
|
private |
While not empty, pop value from toProcess
queue and add it to eqSet
. Go through all users of this value and based on their instruction types do one of the following: (1) Nothing. (2) Add some value(s) directly to eqSet
– user of this value will not be processed. (3) Add some value(s) to toProcess
– value will be added to eqSet
when popped and its users will be processed.
toProcess | Queue of values to process. |
eqSet | Equivalence set to create. |
|
overridevirtual |
|
private |
|
private |
|
private |
|
private |
|
static |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |