15#ifndef BREAKCONSTANTGEPS_H
16#define BREAKCONSTANTGEPS_H
18#if LLVM_VERSION_MAJOR > 16
19#include "llvm/Passes/PassBuilder.h"
20#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
45 return "Remove Constant GEP Expressions";
69 return "unify function exit into one dummy exit basic block";
82 if(fun.isDeclaration())
84#if LLVM_VERSION_MAJOR > 16
86 llvm::LoopAnalysisManager
LAM;
87 llvm::FunctionAnalysisManager
FAM;
88 llvm::CGSCCAnalysisManager
CGAM;
89 llvm::ModuleAnalysisManager
MAM;
91 PB.registerModuleAnalyses(
MAM);
92 PB.registerCGSCCAnalyses(
CGAM);
93 PB.registerFunctionAnalyses(
FAM);
94 PB.registerLoopAnalyses(
LAM);
97 llvm::FunctionPassManager
FPM;
98 FPM.addPass(llvm::UnifyFunctionExitNodesPass());
99 FPM.run(
const_cast<llvm::Function&
>(fun),
FAM);
109 assert(!
fn.isDeclaration() &&
"external function does not have DF");
llvm::StringRef getPassName() const
virtual bool runOnModule(Module &M)
UnifyFunctionExitNodes * getUnifyExit(const Function &fn)
Get Unified Exit basic block node.
llvm::StringRef getPassName() const
void UnifyFunctionExit(Module &module)
virtual bool runOnModule(Module &M)
llvm::IRBuilder IRBuilder
llvm::ModulePass ModulePass
llvm::UnifyFunctionExitNodes UnifyFunctionExitNodes