75 {
76 for (Module::const_iterator iter = module.begin(), eiter = module.end();
77 iter != eiter; ++iter)
78 {
80 if(fun.isDeclaration())
81 continue;
82 llvm::PassBuilder PB;
83 llvm::LoopAnalysisManager LAM;
84 llvm::FunctionAnalysisManager FAM;
85 llvm::CGSCCAnalysisManager CGAM;
86 llvm::ModuleAnalysisManager MAM;
87
88 PB.registerModuleAnalyses(MAM);
89 PB.registerCGSCCAnalyses(CGAM);
90 PB.registerFunctionAnalyses(FAM);
91 PB.registerLoopAnalyses(LAM);
92 PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
93
94 llvm::FunctionPassManager FPM;
95 FPM.addPass(llvm::UnifyFunctionExitNodesPass());
96 FPM.run(const_cast<llvm::Function&>(fun), FAM);
97 }
98 }