Lines Matching refs:CS
199 bool simplifyCallSite(Function *F, CallSite CS);
219 void updateThreshold(CallSite CS, Function &Callee);
222 bool allowSizeGrowth(CallSite CS);
225 bool isColdCallSite(CallSite CS, BlockFrequencyInfo *CallerBFI);
228 Optional<int> getHotCallSiteThreshold(CallSite CS,
263 bool visitCallSite(CallSite CS);
296 InlineResult analyzeCall(CallSite CS);
772 bool CallAnalyzer::allowSizeGrowth(CallSite CS) { in allowSizeGrowth() argument
788 Instruction *Instr = CS.getInstruction(); in allowSizeGrowth()
798 bool CallAnalyzer::isColdCallSite(CallSite CS, BlockFrequencyInfo *CallerBFI) { in isColdCallSite() argument
802 return PSI->isColdCallSite(CS, CallerBFI); in isColdCallSite()
813 auto CallSiteBB = CS.getInstruction()->getParent(); in isColdCallSite()
816 CallerBFI->getBlockFreq(&(CS.getCaller()->getEntryBlock())); in isColdCallSite()
821 CallAnalyzer::getHotCallSiteThreshold(CallSite CS, in getHotCallSiteThreshold() argument
826 if (PSI && PSI->hasProfileSummary() && PSI->isHotCallSite(CS, CallerBFI)) in getHotCallSiteThreshold()
838 auto CallSiteBB = CS.getInstruction()->getParent(); in getHotCallSiteThreshold()
848 void CallAnalyzer::updateThreshold(CallSite CS, Function &Callee) { in updateThreshold() argument
850 if (!allowSizeGrowth(CS)) { in updateThreshold()
855 Function *Caller = CS.getCaller(); in updateThreshold()
926 auto HotCallSiteThreshold = getHotCallSiteThreshold(CS, CallerBFI); in updateThreshold()
934 } else if (isColdCallSite(CS, CallerBFI)) { in updateThreshold()
971 F.hasLocalLinkage() && F.hasOneUse() && &F == CS.getCalledFunction(); in updateThreshold()
1176 bool CallAnalyzer::simplifyCallSite(Function *F, CallSite CS) { in simplifyCallSite() argument
1181 if (!canConstantFoldCallTo(CS, F)) in simplifyCallSite()
1186 ConstantArgs.reserve(CS.arg_size()); in simplifyCallSite()
1187 for (CallSite::arg_iterator I = CS.arg_begin(), E = CS.arg_end(); I != E; in simplifyCallSite()
1197 if (Constant *C = ConstantFoldCall(CS, F, ConstantArgs)) { in simplifyCallSite()
1198 SimplifiedValues[CS.getInstruction()] = C; in simplifyCallSite()
1205 bool CallAnalyzer::visitCallSite(CallSite CS) { in visitCallSite() argument
1206 if (CS.hasFnAttr(Attribute::ReturnsTwice) && in visitCallSite()
1212 if (CS.isCall() && cast<CallInst>(CS.getInstruction())->cannotDuplicate()) in visitCallSite()
1215 if (Function *F = CS.getCalledFunction()) { in visitCallSite()
1217 if (simplifyCallSite(F, CS)) in visitCallSite()
1222 if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(CS.getInstruction())) { in visitCallSite()
1225 if (!CS.onlyReadsMemory() && !isAssumeLikeIntrinsic(II)) in visitCallSite()
1227 return Base::visitCallSite(CS); in visitCallSite()
1250 if (F == CS.getInstruction()->getFunction()) { in visitCallSite()
1260 Cost += CS.arg_size() * InlineConstants::InstrCost; in visitCallSite()
1264 if (!isa<InlineAsm>(CS.getCalledValue())) in visitCallSite()
1268 if (!CS.onlyReadsMemory()) in visitCallSite()
1270 return Base::visitCallSite(CS); in visitCallSite()
1275 Value *Callee = CS.getCalledValue(); in visitCallSite()
1279 Cost += CS.arg_size() * InlineConstants::InstrCost; in visitCallSite()
1285 if (!CS.onlyReadsMemory()) in visitCallSite()
1287 return Base::visitCallSite(CS); in visitCallSite()
1297 CallAnalyzer CA(TTI, GetAssumptionCache, GetBFI, PSI, ORE, *F, CS, in visitCallSite()
1299 if (CA.analyzeCall(CS)) { in visitCallSite()
1307 return Base::visitCallSite(CS); in visitCallSite()
1715 InlineResult CallAnalyzer::analyzeCall(CallSite CS) { in analyzeCall() argument
1732 updateThreshold(CS, F); in analyzeCall()
1748 Cost -= getCallsiteCost(CS, DL); in analyzeCall()
1762 Function *Caller = CS.getInstruction()->getFunction(); in analyzeCall()
1777 CallSite::arg_iterator CAI = CS.arg_begin(); in analyzeCall()
1780 assert(CAI != CS.arg_end()); in analyzeCall()
1890 F.hasLocalLinkage() && F.hasOneUse() && &F == CS.getCalledFunction(); in analyzeCall()
1956 int llvm::getCallsiteCost(CallSite CS, const DataLayout &DL) { in getCallsiteCost() argument
1958 for (unsigned I = 0, E = CS.arg_size(); I != E; ++I) { in getCallsiteCost()
1959 if (CS.isByValArgument(I)) { in getCallsiteCost()
1962 PointerType *PTy = cast<PointerType>(CS.getArgument(I)->getType()); in getCallsiteCost()
1990 CallSite CS, const InlineParams &Params, TargetTransformInfo &CalleeTTI, in getInlineCost() argument
1994 return getInlineCost(CS, CS.getCalledFunction(), Params, CalleeTTI, in getInlineCost()
1999 CallSite CS, Function *Callee, const InlineParams &Params, in getInlineCost() argument
2015 for (unsigned I = 0, E = CS.arg_size(); I != E; ++I) in getInlineCost()
2016 if (CS.isByValArgument(I)) { in getInlineCost()
2017 PointerType *PTy = cast<PointerType>(CS.getArgument(I)->getType()); in getInlineCost()
2025 if (CS.hasFnAttr(Attribute::AlwaysInline)) { in getInlineCost()
2033 Function *Caller = CS.getCaller(); in getInlineCost()
2055 if (CS.isNoInline()) in getInlineCost()
2061 CallAnalyzer CA(CalleeTTI, GetAssumptionCache, GetBFI, PSI, ORE, *Callee, CS, in getInlineCost()
2063 InlineResult ShouldInline = CA.analyzeCall(CS); in getInlineCost()
2085 CallSite CS(&II); in isInlineViable() local
2086 if (!CS) in isInlineViable()
2090 if (&F == CS.getCalledFunction()) in isInlineViable()
2095 if (!ReturnsTwice && CS.isCall() && in isInlineViable()
2096 cast<CallInst>(CS.getInstruction())->canReturnTwice()) in isInlineViable()
2099 if (CS.getCalledFunction()) in isInlineViable()
2100 switch (CS.getCalledFunction()->getIntrinsicID()) { in isInlineViable()