Lines Matching refs:SCCNodes
111 const SCCNodeSet &SCCNodes) { in checkFunctionMemoryAccess() argument
142 SCCNodes.count(Call->getCalledFunction())) in checkFunctionMemoryAccess()
233 static bool addReadAttrs(const SCCNodeSet &SCCNodes, AARGetterT &&AARGetter) { in addReadAttrs() argument
238 for (Function *F : SCCNodes) { in addReadAttrs()
246 AAR, SCCNodes)) { in addReadAttrs()
270 for (Function *F : SCCNodes) { in addReadAttrs()
361 ArgumentUsesTracker(const SCCNodeSet &SCCNodes) : SCCNodes(SCCNodes) {} in ArgumentUsesTracker()
373 if (!F || !F->hasExactDefinition() || !SCCNodes.count(F)) { in captured()
416 const SCCNodeSet &SCCNodes; member
448 const SmallPtrSet<Argument *, 8> &SCCNodes) { in determinePointerReadAttrs() argument
537 !SCCNodes.count(&*std::next(F->arg_begin(), UseIndex))) { in determinePointerReadAttrs()
574 static bool addArgumentReturnedAttrs(const SCCNodeSet &SCCNodes) { in addArgumentReturnedAttrs() argument
578 for (Function *F : SCCNodes) { in addArgumentReturnedAttrs()
686 static bool addArgumentAttrs(const SCCNodeSet &SCCNodes) { in addArgumentAttrs() argument
693 for (Function *F : SCCNodes) { in addArgumentAttrs()
723 ArgumentUsesTracker Tracker(SCCNodes); in addArgumentAttrs()
863 static bool isFunctionMallocLike(Function *F, const SCCNodeSet &SCCNodes) { in isFunctionMallocLike() argument
911 if (CB.getCalledFunction() && SCCNodes.count(CB.getCalledFunction())) in isFunctionMallocLike()
927 static bool addNoAliasAttrs(const SCCNodeSet &SCCNodes) { in addNoAliasAttrs() argument
930 for (Function *F : SCCNodes) { in addNoAliasAttrs()
946 if (!isFunctionMallocLike(F, SCCNodes)) in addNoAliasAttrs()
951 for (Function *F : SCCNodes) { in addNoAliasAttrs()
971 static bool isReturnNonNull(Function *F, const SCCNodeSet &SCCNodes, in isReturnNonNull() argument
1021 if (Callee && SCCNodes.count(Callee)) { in isReturnNonNull()
1037 static bool addNonNullAttrs(const SCCNodeSet &SCCNodes) { in addNonNullAttrs() argument
1046 for (Function *F : SCCNodes) { in addNonNullAttrs()
1064 if (isReturnNonNull(F, SCCNodes, Speculative)) { in addNonNullAttrs()
1082 for (Function *F : SCCNodes) { in addNonNullAttrs()
1148 bool run(const SCCNodeSet &SCCNodes);
1153 bool AttributeInferer::run(const SCCNodeSet &SCCNodes) { in run() argument
1158 for (Function *F : SCCNodes) { in run()
1208 for (Function *F : SCCNodes) in run()
1223 SCCNodeSet SCCNodes; member
1231 const SCCNodeSet &SCCNodes) { in InstrBreaksNonConvergent() argument
1236 SCCNodes.count(CB->getCalledFunction()) == 0; in InstrBreaksNonConvergent()
1240 static bool InstrBreaksNonThrowing(Instruction &I, const SCCNodeSet &SCCNodes) { in InstrBreaksNonThrowing() argument
1248 if (SCCNodes.count(Callee) > 0) in InstrBreaksNonThrowing()
1256 static bool InstrBreaksNoFree(Instruction &I, const SCCNodeSet &SCCNodes) { in InstrBreaksNoFree() argument
1268 if (SCCNodes.count(Callee) > 0) in InstrBreaksNoFree()
1277 static bool inferConvergent(const SCCNodeSet &SCCNodes) { in inferConvergent() argument
1290 [SCCNodes](Instruction &I) { in inferConvergent()
1291 return InstrBreaksNonConvergent(I, SCCNodes); in inferConvergent()
1300 return AI.run(SCCNodes); in inferConvergent()
1309 static bool inferAttrsFromFunctionBodies(const SCCNodeSet &SCCNodes) { in inferAttrsFromFunctionBodies() argument
1323 [&SCCNodes](Instruction &I) { in inferAttrsFromFunctionBodies()
1324 return InstrBreaksNonThrowing(I, SCCNodes); in inferAttrsFromFunctionBodies()
1346 [&SCCNodes](Instruction &I) { in inferAttrsFromFunctionBodies()
1347 return InstrBreaksNoFree(I, SCCNodes); in inferAttrsFromFunctionBodies()
1358 return AI.run(SCCNodes); in inferAttrsFromFunctionBodies()
1361 static bool addNoRecurseAttrs(const SCCNodeSet &SCCNodes) { in addNoRecurseAttrs() argument
1365 if (SCCNodes.size() != 1) in addNoRecurseAttrs()
1368 Function *F = *SCCNodes.begin(); in addNoRecurseAttrs()
1416 Res.SCCNodes.insert(F); in createSCCNodeSet()
1428 if (Nodes.SCCNodes.empty()) in deriveAttrsInPostOrder()
1431 Changed |= addArgumentReturnedAttrs(Nodes.SCCNodes); in deriveAttrsInPostOrder()
1432 Changed |= addReadAttrs(Nodes.SCCNodes, AARGetter); in deriveAttrsInPostOrder()
1433 Changed |= addArgumentAttrs(Nodes.SCCNodes); in deriveAttrsInPostOrder()
1434 Changed |= inferConvergent(Nodes.SCCNodes); in deriveAttrsInPostOrder()
1439 Changed |= addNoAliasAttrs(Nodes.SCCNodes); in deriveAttrsInPostOrder()
1440 Changed |= addNonNullAttrs(Nodes.SCCNodes); in deriveAttrsInPostOrder()
1441 Changed |= inferAttrsFromFunctionBodies(Nodes.SCCNodes); in deriveAttrsInPostOrder()
1442 Changed |= addNoRecurseAttrs(Nodes.SCCNodes); in deriveAttrsInPostOrder()