Lines Matching refs:Function
40 #include "llvm/IR/Function.h"
110 using SCCNodeSet = SmallSetVector<Function *, 8>;
160 checkFunctionMemoryAccess(Function &F, bool ThisBody, AAResults &AAR,
252 MemoryEffects llvm::computeFunctionBodyMemoryAccess(Function &F,
260 SmallSet<Function *, 8> &Changed) {
263 for (Function *F : SCCNodes) {
283 for (Function *F : SCCNodes) {
425 // Function summaries can fail to contain information such as declarations
544 Function *F = CB->getCalledFunction();
688 if (Function *F = CB.getCalledFunction())
754 SmallSet<Function *, 8> &Changed) {
756 for (Function *F : SCCNodes) {
802 static bool addArgumentAttrsFromCallsites(Function &F) {
871 SmallSet<Function *, 8> &Changed) {
876 for (Function *F : SCCNodes) {
1055 static bool isFunctionMallocLike(Function *F, const SCCNodeSet &SCCNodes) {
1120 SmallSet<Function *, 8> &Changed) {
1123 for (Function *F : SCCNodes) {
1143 for (Function *F : SCCNodes) {
1161 static bool isReturnNonNull(Function *F, const SCCNodeSet &SCCNodes,
1213 Function *Callee = CB.getCalledFunction();
1233 SmallSet<Function *, 8> &Changed) {
1240 for (Function *F : SCCNodes) {
1275 for (Function *F : SCCNodes) {
1290 SmallSet<Function *, 8> &Changed) {
1293 for (Function *F : SCCNodes) {
1365 std::function<bool(const Function &)> SkipFunction;
1371 std::function<void(Function &)> SetAttribute;
1381 std::function<bool(const Function &)> SkipFunc,
1383 std::function<void(Function &)> SetAttr,
1398 void run(const SCCNodeSet &SCCNodes, SmallSet<Function *, 8> &Changed);
1404 SmallSet<Function *, 8> &Changed) {
1409 for (Function *F : SCCNodes) {
1458 for (Function *F : SCCNodes)
1493 if (Function *Callee = CI->getCalledFunction()) {
1514 if (Function *Callee = CB->getCalledFunction())
1569 if (Function *Callee = CB->getCalledFunction())
1580 SmallSet<Function *, 8> &Changed) {
1591 [](const Function &F) { return !F.isConvergent(); },
1596 [](Function &F) {
1611 SmallSet<Function *, 8> &Changed) {
1623 [](const Function &F) { return F.doesNotThrow(); },
1628 [](Function &F) {
1646 [](const Function &F) { return F.doesNotFreeMemory(); },
1651 [](Function &F) {
1662 [](const Function &F) { return F.hasNoSync(); },
1667 [](Function &F) {
1680 SmallSet<Function *, 8> &Changed) {
1687 Function *F = *SCCNodes.begin();
1697 Function *Callee = CB->getCalledFunction();
1702 // Function calls a potentially recursive function.
1729 static bool canReturn(Function &F) {
1750 SmallSet<Function *, 8> &Changed) {
1751 for (Function *F : SCCNodes) {
1763 static bool functionWillReturn(const Function &F) {
1794 SmallSet<Function *, 8> &Changed) {
1795 for (Function *F : SCCNodes) {
1805 static SCCNodesResult createSCCNodeSet(ArrayRef<Function *> Functions) {
1808 for (Function *F : Functions) {
1836 static SmallSet<Function *, 8>
1837 deriveAttrsInPostOrder(ArrayRef<Function *> Functions, AARGetterT &&AARGetter,
1845 SmallSet<Function *, 8> Changed;
1872 for (Function *F : Nodes.SCCNodes)
1899 auto AARGetter = [&](Function &F) -> AAResults & {
1903 SmallVector<Function *, 8> Functions;
1918 for (Function *Changed : ChangedFunctions) {
1936 PA.preserveSet<AllAnalysesOn<Function>>();
1950 SmallVector<Function *, 8> Functions;
1958 static bool addNoRecurseAttrsTopDown(Function &F) {
1999 SmallVector<Function *, 16> Worklist;
2005 Function &F = SCC.begin()->getFunction();