Lines Matching refs:SCCNodes
161 const SCCNodeSet &SCCNodes) { in checkFunctionMemoryAccess() argument
190 SCCNodes.count(Call->getCalledFunction())) { in checkFunctionMemoryAccess()
259 static void addMemoryAttrs(const SCCNodeSet &SCCNodes, AARGetterT &&AARGetter, in addMemoryAttrs() argument
263 for (Function *F : SCCNodes) { in addMemoryAttrs()
270 checkFunctionMemoryAccess(*F, F->hasExactDefinition(), AAR, SCCNodes); in addMemoryAttrs()
283 for (Function *F : SCCNodes) { in addMemoryAttrs()
415 auto PropagateAttributes = [&](std::vector<ValueInfo> &SCCNodes) { in thinLTOPropagateFunctionAttrs() argument
418 InferredFlags.NoRecurse = (SCCNodes.size() == 1); in thinLTOPropagateFunctionAttrs()
421 for (auto &V : SCCNodes) { in thinLTOPropagateFunctionAttrs()
452 for (auto &V : SCCNodes) { in thinLTOPropagateFunctionAttrs()
533 ArgumentUsesTracker(const SCCNodeSet &SCCNodes) : SCCNodes(SCCNodes) {} in ArgumentUsesTracker()
545 if (!F || !F->hasExactDefinition() || !SCCNodes.count(F)) { in captured()
580 const SCCNodeSet &SCCNodes; member
612 const SmallPtrSet<Argument *, 8> &SCCNodes) { in determinePointerAccessAttrs() argument
690 SCCNodes.count(F->getArg(UseIndex))) in determinePointerAccessAttrs()
753 static void addArgumentReturnedAttrs(const SCCNodeSet &SCCNodes, in addArgumentReturnedAttrs() argument
756 for (Function *F : SCCNodes) { in addArgumentReturnedAttrs()
870 static void addArgumentAttrs(const SCCNodeSet &SCCNodes, in addArgumentAttrs() argument
876 for (Function *F : SCCNodes) { in addArgumentAttrs()
905 ArgumentUsesTracker Tracker(SCCNodes); in addArgumentAttrs()
1055 static bool isFunctionMallocLike(Function *F, const SCCNodeSet &SCCNodes) { in isFunctionMallocLike() argument
1103 if (CB.getCalledFunction() && SCCNodes.count(CB.getCalledFunction())) in isFunctionMallocLike()
1119 static void addNoAliasAttrs(const SCCNodeSet &SCCNodes, in addNoAliasAttrs() argument
1123 for (Function *F : SCCNodes) { in addNoAliasAttrs()
1139 if (!isFunctionMallocLike(F, SCCNodes)) in addNoAliasAttrs()
1143 for (Function *F : SCCNodes) { in addNoAliasAttrs()
1161 static bool isReturnNonNull(Function *F, const SCCNodeSet &SCCNodes, in isReturnNonNull() argument
1216 if (Callee && SCCNodes.count(Callee)) { in isReturnNonNull()
1232 static void addNonNullAttrs(const SCCNodeSet &SCCNodes, in addNonNullAttrs() argument
1240 for (Function *F : SCCNodes) { in addNonNullAttrs()
1257 if (isReturnNonNull(F, SCCNodes, Speculative)) { in addNonNullAttrs()
1275 for (Function *F : SCCNodes) { in addNonNullAttrs()
1289 static void addNoUndefAttrs(const SCCNodeSet &SCCNodes, in addNoUndefAttrs() argument
1293 for (Function *F : SCCNodes) { in addNoUndefAttrs()
1377 void run(const SCCNodeSet &SCCNodes, SmallSet<Function *, 8> &Changed);
1382 void AttributeInferer::run(const SCCNodeSet &SCCNodes, in run() argument
1388 for (Function *F : SCCNodes) { in run()
1437 for (Function *F : SCCNodes) in run()
1451 SCCNodeSet SCCNodes; member
1459 const SCCNodeSet &SCCNodes) { in InstrBreaksNonConvergent() argument
1464 !SCCNodes.contains(CB->getCalledFunction()); in InstrBreaksNonConvergent()
1468 static bool InstrBreaksNonThrowing(Instruction &I, const SCCNodeSet &SCCNodes) { in InstrBreaksNonThrowing() argument
1476 if (SCCNodes.contains(Callee)) in InstrBreaksNonThrowing()
1484 static bool InstrBreaksNoFree(Instruction &I, const SCCNodeSet &SCCNodes) { in InstrBreaksNoFree() argument
1494 if (SCCNodes.contains(Callee)) in InstrBreaksNoFree()
1523 static bool InstrBreaksNoSync(Instruction &I, const SCCNodeSet &SCCNodes) { in InstrBreaksNoSync() argument
1549 if (SCCNodes.contains(Callee)) in InstrBreaksNoSync()
1558 static void inferConvergent(const SCCNodeSet &SCCNodes, in inferConvergent() argument
1572 [SCCNodes](Instruction &I) { in inferConvergent()
1573 return InstrBreaksNonConvergent(I, SCCNodes); in inferConvergent()
1582 AI.run(SCCNodes, Changed); in inferConvergent()
1589 static void inferAttrsFromFunctionBodies(const SCCNodeSet &SCCNodes, in inferAttrsFromFunctionBodies() argument
1604 [&SCCNodes](Instruction &I) { in inferAttrsFromFunctionBodies()
1605 return InstrBreaksNonThrowing(I, SCCNodes); in inferAttrsFromFunctionBodies()
1627 [&SCCNodes](Instruction &I) { in inferAttrsFromFunctionBodies()
1628 return InstrBreaksNoFree(I, SCCNodes); in inferAttrsFromFunctionBodies()
1643 [&SCCNodes](Instruction &I) { in inferAttrsFromFunctionBodies()
1644 return InstrBreaksNoSync(I, SCCNodes); in inferAttrsFromFunctionBodies()
1655 AI.run(SCCNodes, Changed); in inferAttrsFromFunctionBodies()
1658 static void addNoRecurseAttrs(const SCCNodeSet &SCCNodes, in addNoRecurseAttrs() argument
1663 if (SCCNodes.size() != 1) in addNoRecurseAttrs()
1666 Function *F = *SCCNodes.begin(); in addNoRecurseAttrs()
1728 static void addNoReturnAttrs(const SCCNodeSet &SCCNodes, in addNoReturnAttrs() argument
1730 for (Function *F : SCCNodes) { in addNoReturnAttrs()
1772 static void addWillReturn(const SCCNodeSet &SCCNodes, in addWillReturn() argument
1774 for (Function *F : SCCNodes) { in addWillReturn()
1809 Res.SCCNodes.insert(F); in createSCCNodeSet()
1821 if (Nodes.SCCNodes.empty()) in deriveAttrsInPostOrder()
1826 addArgumentAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1830 addArgumentReturnedAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1831 addMemoryAttrs(Nodes.SCCNodes, AARGetter, Changed); in deriveAttrsInPostOrder()
1832 addArgumentAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1833 inferConvergent(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1834 addNoReturnAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1835 addWillReturn(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1836 addNoUndefAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1841 addNoAliasAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1842 addNonNullAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1843 inferAttrsFromFunctionBodies(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1844 addNoRecurseAttrs(Nodes.SCCNodes, Changed); in deriveAttrsInPostOrder()
1851 for (Function *F : Nodes.SCCNodes) in deriveAttrsInPostOrder()