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

Removes unreachable functions from main. More...

#include <unreachable_funcs.h>

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

Public Member Functions

 UnreachableFuncs ()
 Created a new unreachable functions optimizer. More...
 
virtual void getAnalysisUsage (llvm::AnalysisUsage &au) const override
 
virtual bool runOnModule (llvm::Module &m) override
 
bool runOnModuleCustom (llvm::Module &m, Config *c)
 

Static Public Attributes

static char ID = 0
 

Private Member Functions

bool run ()
 
void getFuncsThatCannotBeOptimized (std::set< llvm::Function * > &funcsThatCannotBeOptimized)
 
void removeFuncsThatCanBeOptimized (const std::set< llvm::Function * > &funcsThatCannotBeOptimized)
 

Private Attributes

llvm::Module * module = nullptr
 
Configconfig = nullptr
 
llvm::CallGraph * callGraph = nullptr
 
llvm::Function * mainFunc = nullptr
 
unsigned NumFuncsRemoved = 0
 

Detailed Description

Removes unreachable functions from main.

void func1() { ... } <- Not calls func2.
void func2() { ... } <- Unreachable function. Can be optimized.
int main() {
func1();
}
int main(int argc, char **argv)
Definition: ar_extractor.cpp:366

Constructor & Destructor Documentation

◆ UnreachableFuncs()

retdec::bin2llvmir::UnreachableFuncs::UnreachableFuncs ( )

Created a new unreachable functions optimizer.

Member Function Documentation

◆ getAnalysisUsage()

void retdec::bin2llvmir::UnreachableFuncs::getAnalysisUsage ( llvm::AnalysisUsage &  au) const
overridevirtual

◆ getFuncsThatCannotBeOptimized()

void retdec::bin2llvmir::UnreachableFuncs::getFuncsThatCannotBeOptimized ( std::set< llvm::Function * > &  funcsThatCannotBeOptimized)
private

◆ removeFuncsThatCanBeOptimized()

void retdec::bin2llvmir::UnreachableFuncs::removeFuncsThatCanBeOptimized ( const std::set< llvm::Function * > &  funcsThatCannotBeOptimized)
private

◆ run()

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

◆ runOnModule()

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

◆ runOnModuleCustom()

bool retdec::bin2llvmir::UnreachableFuncs::runOnModuleCustom ( llvm::Module &  m,
Config c 
)

Member Data Documentation

◆ callGraph

llvm::CallGraph* retdec::bin2llvmir::UnreachableFuncs::callGraph = nullptr
private

◆ config

Config* retdec::bin2llvmir::UnreachableFuncs::config = nullptr
private

◆ ID

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

◆ mainFunc

llvm::Function* retdec::bin2llvmir::UnreachableFuncs::mainFunc = nullptr
private

◆ module

llvm::Module* retdec::bin2llvmir::UnreachableFuncs::module = nullptr
private

◆ NumFuncsRemoved

unsigned retdec::bin2llvmir::UnreachableFuncs::NumFuncsRemoved = 0
private

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