Lines Matching refs:F

74   bool lowerFunction(Function &F);
81 std::pair<uint32_t, uint32_t> getNumCountersAndCallsites(const Function &F) { in getNumCountersAndCallsites() argument
84 for (const auto &BB : F) { in getNumCountersAndCallsites()
110 void emitUnsupportedRootError(const Function &F, StringRef Reason) { in emitUnsupportedRootError() argument
111 F.getContext().emitError("[ctxprof] The function " + F.getName() + in emitUnsupportedRootError()
167 if (const auto *F = M.getFunction(Fname)) { in CtxInstrumentationLowerer() local
168 if (F->isDeclaration()) in CtxInstrumentationLowerer()
170 ContextRootSet.insert(F); in CtxInstrumentationLowerer()
171 for (const auto &BB : *F) in CtxInstrumentationLowerer()
175 emitUnsupportedRootError(*F, "it features musttail calls"); in CtxInstrumentationLowerer()
225 for (auto &F : M) in run() local
226 Changed |= Lowerer.lowerFunction(F); in run()
230 bool CtxInstrumentationLowerer::lowerFunction(Function &F) { in lowerFunction() argument
231 if (F.isDeclaration()) in lowerFunction()
236 if (!llvm::canReturn(F)) { in lowerFunction()
237 for (auto &BB : F) in lowerFunction()
241 if (ContextRootSet.contains(&F)) in lowerFunction()
242 emitUnsupportedRootError(F, "it does not return"); in lowerFunction()
247 auto &ORE = FAM.getResult<OptimizationRemarkEmitterAnalysis>(F); in lowerFunction()
250 auto [NumCounters, NumCallsites] = getNumCountersAndCallsites(F); in lowerFunction()
259 const bool HasMusttail = [&F]() { in lowerFunction()
260 for (auto &BB : F) in lowerFunction()
268 if (HasMusttail && ContextRootSet.contains(&F)) { in lowerFunction()
269 F.getContext().emitError( in lowerFunction()
273 F.getName()); in lowerFunction()
276 auto &Head = F.getEntryBlock(); in lowerFunction()
289 F.getContext(), in lowerFunction()
308 if (ContextRootSet.contains(&F)) { in lowerFunction()
313 [&] { return OptimizationRemark(DEBUG_TYPE, "Entrypoint", &F); }); in lowerFunction()
315 Context = Builder.CreateCall(GetCtx, {TheRootFuctionData, &F, Guid, in lowerFunction()
319 return OptimizationRemark(DEBUG_TYPE, "RegularFunction", &F); in lowerFunction()
330 PointerType::getUnqual(F.getContext()), in lowerFunction()
343 PointerType::getUnqual(F.getContext())); in lowerFunction()
350 return OptimizationRemarkMissed(DEBUG_TYPE, "Skip", &F) in lowerFunction()
357 for (auto &BB : F) { in lowerFunction()
408 F.getContext().emitError( in lowerFunction()
412 F.getName()); in lowerFunction()
419 for (auto &F : M) { in run() local
420 if (F.isDeclaration()) in run()
422 if (F.hasFnAttribute(Attribute::NoInline)) in run()
424 if (!F.isWeakForLinker()) in run()
427 if (F.hasFnAttribute(Attribute::AlwaysInline)) in run()
428 F.removeFnAttr(Attribute::AlwaysInline); in run()
430 F.addFnAttr(Attribute::NoInline); in run()