Static Value-Flow Analysis
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | List of all members
SVF::MergeFunctionRets Class Reference

#include <BreakConstantExpr.h>

Inheritance diagram for SVF::MergeFunctionRets:

Public Member Functions

 MergeFunctionRets ()
 
llvm::StringRef getPassName () const
 
virtual bool runOnModule (Module &M)
 
void UnifyFunctionExit (Module &module)
 
UnifyFunctionExitNodesgetUnifyExit (const Function &fn)
 Get Unified Exit basic block node.
 

Static Public Attributes

static char ID = 0
 

Detailed Description

Definition at line 57 of file BreakConstantExpr.h.

Constructor & Destructor Documentation

◆ MergeFunctionRets()

SVF::MergeFunctionRets::MergeFunctionRets ( )
inline

Definition at line 66 of file BreakConstantExpr.h.

66: ModulePass(ID) {}
llvm::ModulePass ModulePass
Definition BasicTypes.h:73

Member Function Documentation

◆ getPassName()

llvm::StringRef SVF::MergeFunctionRets::getPassName ( ) const
inline

Definition at line 67 of file BreakConstantExpr.h.

68 {
69 return "unify function exit into one dummy exit basic block";
70 }

◆ getUnifyExit()

UnifyFunctionExitNodes * SVF::MergeFunctionRets::getUnifyExit ( const Function fn)
inline

Get Unified Exit basic block node.

Definition at line 107 of file BreakConstantExpr.h.

108 {
109 assert(!fn.isDeclaration() && "external function does not have DF");
110 return &getAnalysis<UnifyFunctionExitNodes>(const_cast<Function&>(fn));
111 }
llvm::Function Function
Definition BasicTypes.h:87
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:74

◆ runOnModule()

virtual bool SVF::MergeFunctionRets::runOnModule ( Module M)
inlinevirtual

Definition at line 71 of file BreakConstantExpr.h.

72 {
74 return true;
75 }
void UnifyFunctionExit(Module &module)

◆ UnifyFunctionExit()

void SVF::MergeFunctionRets::UnifyFunctionExit ( Module module)
inline

Definition at line 76 of file BreakConstantExpr.h.

77 {
78 for (Module::const_iterator iter = module.begin(), eiter = module.end();
79 iter != eiter; ++iter)
80 {
81 const Function& fun = *iter;
82 if(fun.isDeclaration())
83 continue;
84#if LLVM_VERSION_MAJOR > 16
85 llvm::PassBuilder PB;
86 llvm::LoopAnalysisManager LAM;
87 llvm::FunctionAnalysisManager FAM;
88 llvm::CGSCCAnalysisManager CGAM;
89 llvm::ModuleAnalysisManager MAM;
90
91 PB.registerModuleAnalyses(MAM);
92 PB.registerCGSCCAnalyses(CGAM);
93 PB.registerFunctionAnalyses(FAM);
94 PB.registerLoopAnalyses(LAM);
95 PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
96
97 llvm::FunctionPassManager FPM;
98 FPM.addPass(llvm::UnifyFunctionExitNodesPass());
99 FPM.run(const_cast<llvm::Function&>(fun), FAM);
100 }
101 }
102#else
103 getUnifyExit(fun)->runOnFunction(const_cast<Function&>(fun));
104 }
105 }
UnifyFunctionExitNodes * getUnifyExit(const Function &fn)
Get Unified Exit basic block node.

Member Data Documentation

◆ ID

char MergeFunctionRets::ID = 0
static

Definition at line 65 of file BreakConstantExpr.h.


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