Lines Matching refs:F
133 Function *F = CB->getCalledFunction(); in tryToReplaceWithConstant() local
136 if (F) in tryToReplaceWithConstant()
137 Solver.addToMustPreserveReturnsInFunctions(F); in tryToReplaceWithConstant()
188 static bool runSCCP(Function &F, const DataLayout &DL, in runSCCP() argument
190 LLVM_DEBUG(dbgs() << "SCCP on function '" << F.getName() << "'\n"); in runSCCP()
192 DL, [TLI](Function &F) -> const TargetLibraryInfo & { return *TLI; }, in runSCCP() argument
193 F.getContext()); in runSCCP()
196 Solver.markBlockExecutable(&F.front()); in runSCCP()
199 for (Argument &AI : F.args()) in runSCCP()
207 ResolvedUndefs = Solver.resolvedUndefsIn(F); in runSCCP()
217 for (BasicBlock &BB : F) { in runSCCP()
235 PreservedAnalyses SCCPPass::run(Function &F, FunctionAnalysisManager &AM) { in run() argument
236 const DataLayout &DL = F.getParent()->getDataLayout(); in run()
237 auto &TLI = AM.getResult<TargetLibraryAnalysis>(F); in run()
238 if (!runSCCP(F, DL, &TLI)) in run()
270 bool runOnFunction(Function &F) override { in runOnFunction() argument
271 if (skipFunction(F)) in runOnFunction()
273 const DataLayout &DL = F.getParent()->getDataLayout(); in runOnFunction()
275 &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F); in runOnFunction()
276 return runSCCP(F, DL, TLI); in runOnFunction()
293 static void findReturnsToZap(Function &F, in findReturnsToZap() argument
297 if (!Solver.isArgumentTrackedFunction(&F)) in findReturnsToZap()
300 if (Solver.mustPreserveReturn(&F)) { in findReturnsToZap()
303 << "Can't zap returns of the function : " << F.getName() in findReturnsToZap()
310 all_of(F.users(), in findReturnsToZap()
331 for (BasicBlock &BB : F) { in findReturnsToZap()
417 for (Function &F : M) { in runIPSCCP()
418 if (F.isDeclaration()) in runIPSCCP()
421 Solver.addAnalysis(F, getAnalysis(F)); in runIPSCCP()
425 if (canTrackReturnsInterprocedurally(&F)) in runIPSCCP()
426 Solver.addTrackedFunction(&F); in runIPSCCP()
430 if (canTrackArgumentsInterprocedurally(&F)) { in runIPSCCP()
431 Solver.addArgumentTrackedFunction(&F); in runIPSCCP()
436 Solver.markBlockExecutable(&F.front()); in runIPSCCP()
439 for (Argument &AI : F.args()) in runIPSCCP()
458 for (Function &F : M) { in runIPSCCP()
459 if (Solver.resolvedUndefsIn(F)) in runIPSCCP()
471 for (Function &F : M) { in runIPSCCP()
472 if (F.isDeclaration()) in runIPSCCP()
477 if (Solver.isBlockExecutable(&F.front())) { in runIPSCCP()
479 for (Argument &Arg : F.args()) { in runIPSCCP()
493 F.removeAttributes(AttributeList::FunctionIndex, AttributesToRemove); in runIPSCCP()
495 for (User *U : F.users()) { in runIPSCCP()
497 if (!CB || CB->getCalledFunction() != &F) in runIPSCCP()
507 for (BasicBlock &BB : F) { in runIPSCCP()
514 if (&BB != &F.front()) in runIPSCCP()
523 DomTreeUpdater DTU = Solver.getDTU(F); in runIPSCCP()
532 if (!Solver.isBlockExecutable(&F.front())) in runIPSCCP()
533 NumInstRemoved += changeToUnreachable(F.front().getFirstNonPHI(), in runIPSCCP()
536 for (BasicBlock &BB : F) in runIPSCCP()
542 for (BasicBlock &BB : F) { in runIPSCCP()
571 Function *F = I.first; in runIPSCCP() local
583 for (User *User : F->users()) { in runIPSCCP()
585 if (!CB || CB->getCalledFunction() != F) in runIPSCCP()
609 if (F->getReturnType()->isVoidTy()) in runIPSCCP()
612 findReturnsToZap(*F, ReturnsToZap, Solver); in runIPSCCP()
615 for (auto F : Solver.getMRVFunctionsTracked()) { in runIPSCCP() local
616 assert(F->getReturnType()->isStructTy() && in runIPSCCP()
618 StructType *STy = cast<StructType>(F->getReturnType()); in runIPSCCP()
619 if (Solver.isStructLatticeConstant(F, STy)) in runIPSCCP()
620 findReturnsToZap(*F, ReturnsToZap, Solver); in runIPSCCP()
626 Function *F = ReturnsToZap[i]->getParent()->getParent(); in runIPSCCP() local
627 ReturnsToZap[i]->setOperand(0, UndefValue::get(F->getReturnType())); in runIPSCCP()
629 FuncZappedReturn.insert(F); in runIPSCCP()
634 for (Function *F : FuncZappedReturn) { in runIPSCCP()
635 for (Argument &A : F->args()) in runIPSCCP()
636 F->removeParamAttr(A.getArgNo(), Attribute::Returned); in runIPSCCP()
637 for (Use &U : F->uses()) { in runIPSCCP()