Lines Matching defs:F
50 static void findReturnsToZap(Function &F,
54 if (!Solver.isArgumentTrackedFunction(&F))
57 if (Solver.mustPreserveReturn(&F)) {
60 << "Can't zap returns of the function : " << F.getName()
67 all_of(F.users(),
96 for (BasicBlock &BB : F) {
124 for (Function &F : M) {
125 if (F.isDeclaration())
128 DominatorTree &DT = GetDT(F);
129 AssumptionCache &AC = GetAC(F);
130 Solver.addPredicateInfo(F, DT, AC);
134 if (canTrackReturnsInterprocedurally(&F))
135 Solver.addTrackedFunction(&F);
139 if (canTrackArgumentsInterprocedurally(&F)) {
140 Solver.addArgumentTrackedFunction(&F);
145 Solver.markBlockExecutable(&F.front());
147 for (Argument &AI : F.args())
171 for (Function &F : M) {
172 if (F.isDeclaration())
177 if (Solver.isBlockExecutable(&F.front())) {
179 for (Argument &Arg : F.args()) {
197 F.getContext(),
198 Attribute::getWithMemoryEffects(F.getContext(), ME));
201 F.setAttributes(UpdateAttrs(F.getAttributes()));
202 for (User *U : F.users()) {
204 if (!CB || CB->getCalledFunction() != &F)
214 for (BasicBlock &BB : F) {
221 if (&BB != &F.front())
230 DominatorTree *DT = FAM->getCachedResult<DominatorTreeAnalysis>(F);
231 PostDominatorTree *PDT = FAM->getCachedResult<PostDominatorTreeAnalysis>(F);
241 if (!Solver.isBlockExecutable(&F.front()))
242 NumInstRemoved += changeToUnreachable(F.front().getFirstNonPHIOrDbg(),
246 for (BasicBlock &BB : F)
253 for (BasicBlock &BB : F) {
281 Function *F = I.first;
295 if (F->hasRetAttribute(Attribute::Range))
298 F->addRangeRetAttr(CR);
301 if (F->getReturnType()->isVoidTy())
304 findReturnsToZap(*F, ReturnsToZap, Solver);
307 for (auto *F : Solver.getMRVFunctionsTracked()) {
308 assert(F->getReturnType()->isStructTy() &&
310 StructType *STy = cast<StructType>(F->getReturnType());
311 if (Solver.isStructLatticeConstant(F, STy))
312 findReturnsToZap(*F, ReturnsToZap, Solver);
318 Function *F = RI->getParent()->getParent();
319 RI->setOperand(0, PoisonValue::get(F->getReturnType()));
321 FuncZappedReturn.insert(F);
330 for (Function *F : FuncZappedReturn) {
331 for (Argument &A : F->args())
332 F->removeParamAttr(A.getArgNo(), Attribute::Returned);
333 F->removeRetAttrs(UBImplyingAttributes);
334 for (Use &U : F->uses()) {
386 auto GetTLI = [&FAM](Function &F) -> const TargetLibraryInfo & {
387 return FAM.getResult<TargetLibraryAnalysis>(F);
389 auto GetTTI = [&FAM](Function &F) -> TargetTransformInfo & {
390 return FAM.getResult<TargetIRAnalysis>(F);
392 auto GetAC = [&FAM](Function &F) -> AssumptionCache & {
393 return FAM.getResult<AssumptionAnalysis>(F);
395 auto GetDT = [&FAM](Function &F) -> DominatorTree & {
396 return FAM.getResult<DominatorTreeAnalysis>(F);
398 auto GetBFI = [&FAM](Function &F) -> BlockFrequencyInfo & {
399 return FAM.getResult<BlockFrequencyAnalysis>(F);