Lines Matching refs:CB

884 propagateMemProfMetadata(Function *Callee, CallBase &CB,  in propagateMemProfMetadata()  argument
887 MDNode *CallsiteMD = CB.getMetadata(LLVMContext::MD_callsite); in propagateMemProfMetadata()
916 static void PropagateCallSiteMetadata(CallBase &CB, Function::iterator FStart, in PropagateCallSiteMetadata() argument
919 CB.getMetadata(LLVMContext::MD_mem_parallel_loop_access); in PropagateCallSiteMetadata()
920 MDNode *AccessGroup = CB.getMetadata(LLVMContext::MD_access_group); in PropagateCallSiteMetadata()
921 MDNode *AliasScope = CB.getMetadata(LLVMContext::MD_alias_scope); in PropagateCallSiteMetadata()
922 MDNode *NoAlias = CB.getMetadata(LLVMContext::MD_noalias); in PropagateCallSiteMetadata()
1095 static void AddAliasScopeMetadata(CallBase &CB, ValueToValueMapTy &VMap, in AddAliasScopeMetadata() argument
1101 const Function *CalledFunc = CB.getCalledFunction(); in AddAliasScopeMetadata()
1105 if (CB.paramHasAttr(Arg.getArgNo(), Attribute::NoAlias) && !Arg.use_empty()) in AddAliasScopeMetadata()
1151 IRBuilder<>(&CB).CreateNoAliasScopeDeclaration(AScopeList); in AddAliasScopeMetadata()
1252 if (!CB.paramHasAttr(A->getArgNo(), Attribute::NoAlias)) in AddAliasScopeMetadata()
1351 static void AddParamAndFnBasicAttributes(const CallBase &CB, in AddParamAndFnBasicAttributes() argument
1354 auto *CalledFunction = CB.getCalledFunction(); in AddParamAndFnBasicAttributes()
1361 for (unsigned I = 0, E = CB.arg_size(); I < E; ++I) { in AddParamAndFnBasicAttributes()
1362 ValidParamAttrs.emplace_back(AttrBuilder{CB.getContext()}); in AddParamAndFnBasicAttributes()
1365 if (CB.paramHasAttr(I, Attribute::ReadNone)) in AddParamAndFnBasicAttributes()
1367 if (CB.paramHasAttr(I, Attribute::ReadOnly)) in AddParamAndFnBasicAttributes()
1438 static AttrBuilder IdentifyValidUBGeneratingAttributes(CallBase &CB) { in IdentifyValidUBGeneratingAttributes() argument
1439 AttrBuilder Valid(CB.getContext()); in IdentifyValidUBGeneratingAttributes()
1440 if (auto DerefBytes = CB.getRetDereferenceableBytes()) in IdentifyValidUBGeneratingAttributes()
1442 if (auto DerefOrNullBytes = CB.getRetDereferenceableOrNullBytes()) in IdentifyValidUBGeneratingAttributes()
1444 if (CB.hasRetAttr(Attribute::NoAlias)) in IdentifyValidUBGeneratingAttributes()
1446 if (CB.hasRetAttr(Attribute::NoUndef)) in IdentifyValidUBGeneratingAttributes()
1453 static AttrBuilder IdentifyValidPoisonGeneratingAttributes(CallBase &CB) { in IdentifyValidPoisonGeneratingAttributes() argument
1454 AttrBuilder Valid(CB.getContext()); in IdentifyValidPoisonGeneratingAttributes()
1455 if (CB.hasRetAttr(Attribute::NonNull)) in IdentifyValidPoisonGeneratingAttributes()
1457 if (CB.hasRetAttr(Attribute::Alignment)) in IdentifyValidPoisonGeneratingAttributes()
1458 Valid.addAlignmentAttr(CB.getRetAlign()); in IdentifyValidPoisonGeneratingAttributes()
1459 if (std::optional<ConstantRange> Range = CB.getRange()) in IdentifyValidPoisonGeneratingAttributes()
1464 static void AddReturnAttributes(CallBase &CB, ValueToValueMapTy &VMap, in AddReturnAttributes() argument
1466 AttrBuilder ValidUB = IdentifyValidUBGeneratingAttributes(CB); in AddReturnAttributes()
1467 AttrBuilder ValidPG = IdentifyValidPoisonGeneratingAttributes(CB); in AddReturnAttributes()
1470 auto *CalledFunction = CB.getCalledFunction(); in AddReturnAttributes()
1577 if (CB.hasRetAttr(Attribute::NoUndef) || in AddReturnAttributes()
1587 static void AddAlignmentAssumptions(CallBase &CB, InlineFunctionInfo &IFI) { in AddAlignmentAssumptions() argument
1591 AssumptionCache *AC = &IFI.GetAssumptionCache(*CB.getCaller()); in AddAlignmentAssumptions()
1592 auto &DL = CB.getDataLayout(); in AddAlignmentAssumptions()
1599 Function *CalledFunc = CB.getCalledFunction(); in AddAlignmentAssumptions()
1609 DT.recalculate(*CB.getCaller()); in AddAlignmentAssumptions()
1614 Value *ArgVal = CB.getArgOperand(Arg.getArgNo()); in AddAlignmentAssumptions()
1615 if (getKnownAlignment(ArgVal, DL, &CB, AC, &DT) >= *Alignment) in AddAlignmentAssumptions()
1618 CallInst *NewAsmp = IRBuilder<>(&CB).CreateAlignmentAssumption( in AddAlignmentAssumptions()
1857 const CallBase &CB) { in collectEscapedLocals() argument
1863 for (const Value *Arg : CB.args()) { in collectEscapedLocals()
1907 const CallBase &CB) { in trackInlinedStores() argument
1910 << CB.getCalledFunction()->getName() << "\n"); in trackInlinedStores()
1911 std::unique_ptr<DataLayout> DL = std::make_unique<DataLayout>(CB.getModule()); in trackInlinedStores()
1912 at::trackAssignments(Start, End, collectEscapedLocals(*DL, CB), *DL); in trackInlinedStores()
1993 auto updateVTableProfWeight = [](CallBase *CB, const uint64_t NewEntryCount, in updateProfileCallee()
1995 Instruction *VPtr = PGOIndirectCallVisitor::tryGetVTableInstruction(CB); in updateProfileCallee()
2055 inlineRetainOrClaimRVCalls(CallBase &CB, objcarc::ARCInstKind RVCallKind, in inlineRetainOrClaimRVCalls() argument
2057 Module *Mod = CB.getModule(); in inlineRetainOrClaimRVCalls()
2109 Value *BundleArgs[] = {*objcarc::getAttachedARCFunction(&CB)}; in inlineRetainOrClaimRVCalls()
2139 llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI, in InlineFunction() argument
2144 assert(CB.getParent() && CB.getFunction() && "Instruction not in function!"); in InlineFunction()
2147 if (isa<CallBrInst>(CB)) in InlineFunction()
2153 Function *CalledFunc = CB.getCalledFunction(); in InlineFunction()
2161 if (CB.hasOperandBundles()) { in InlineFunction()
2162 for (int i = 0, e = CB.getNumOperandBundles(); i != e; ++i) { in InlineFunction()
2163 auto OBUse = CB.getOperandBundleAt(i); in InlineFunction()
2193 if (CB.isConvergent()) { in InlineFunction()
2208 bool MarkNoUnwind = CB.doesNotThrow(); in InlineFunction()
2210 BasicBlock *OrigBB = CB.getParent(); in InlineFunction()
2255 CB.getOperandBundle(LLVMContext::OB_funclet); in InlineFunction()
2288 if (CallSiteEHPad && isa<CallInst>(CB)) { in InlineFunction()
2324 ScopedAliasMetadataDeepCloner SAMetadataCloner(CB.getCalledFunction()); in InlineFunction()
2330 auto AI = CB.arg_begin(); in InlineFunction()
2340 if (CB.isByValArgument(ArgNo)) { in InlineFunction()
2341 ActualArg = HandleByValArgument(CB.getParamByValType(ArgNo), ActualArg, in InlineFunction()
2342 &CB, CalledFunc, IFI, in InlineFunction()
2346 {ActualArg, (Value *)*AI, CB.getParamByValType(ArgNo)}); in InlineFunction()
2356 AddAlignmentAssumptions(CB, IFI); in InlineFunction()
2362 salvageKnowledge(&CB, AC); in InlineFunction()
2375 objcarc::ARCInstKind RVCallKind = objcarc::getAttachedARCFunctionKind(&CB); in InlineFunction()
2377 inlineRetainOrClaimRVCalls(CB, RVCallKind, Returns); in InlineFunction()
2390 updateCallProfile(CalledFunc, VMap, *Profile, CB, IFI.PSI, in InlineFunction()
2400 CB.getOperandBundle(LLVMContext::OB_deopt); in InlineFunction()
2450 fixupLineNumbers(Caller, FirstNewBlock, &CB, in InlineFunction()
2455 trackInlinedStores(FirstNewBlock, Caller->end(), CB); in InlineFunction()
2467 AddAliasScopeMetadata(CB, VMap, DL, CalleeAAR, InlinedFunctionInfo); in InlineFunction()
2471 AddReturnAttributes(CB, VMap, InlinedFunctionInfo); in InlineFunction()
2475 AddParamAndFnBasicAttributes(CB, VMap, InlinedFunctionInfo); in InlineFunction()
2477 propagateMemProfMetadata(CalledFunc, CB, in InlineFunction()
2481 PropagateCallSiteMetadata(CB, FirstNewBlock, Caller->end()); in InlineFunction()
2548 i < CB.arg_size(); i++) { in InlineFunction()
2549 VarArgsToForward.push_back(CB.getArgOperand(i)); in InlineFunction()
2550 VarArgsAttrs.push_back(CB.getAttributes().getParamAttrs(i)); in InlineFunction()
2556 if (CallInst *CI = dyn_cast<CallInst>(&CB)) in InlineFunction()
2718 if (auto *II = dyn_cast<InvokeInst>(&CB)) { in InlineFunction()
2767 if (Caller->getReturnType() == CB.getType()) { in InlineFunction()
2829 bool NeedBitCast = !CB.use_empty() && CB.getType() != NewRetTy; in InlineFunction()
2870 if (auto *CB = dyn_cast<CallBase>(&I)) in InlineFunction() local
2871 if (!(CB->getCalledFunction() && in InlineFunction()
2872 CB->getCalledFunction()->isIntrinsic())) in InlineFunction()
2873 IFI.InlinedCallSites.push_back(CB); in InlineFunction()
2881 OrigBB->splice(CB.getIterator(), &*FirstNewBlock, FirstNewBlock->begin(), in InlineFunction()
2888 if (InvokeInst *II = dyn_cast<InvokeInst>(&CB)) { in InlineFunction()
2889 BranchInst *NewBr = BranchInst::Create(II->getNormalDest(), CB.getIterator()); in InlineFunction()
2895 if (!CB.use_empty()) { in InlineFunction()
2897 if (&CB == R->getReturnValue()) in InlineFunction()
2898 CB.replaceAllUsesWith(PoisonValue::get(CB.getType())); in InlineFunction()
2900 CB.replaceAllUsesWith(R->getReturnValue()); in InlineFunction()
2903 CB.eraseFromParent(); in InlineFunction()
2923 if (InvokeInst *II = dyn_cast<InvokeInst>(&CB)) { in InlineFunction()
2926 CreatedBranchToNormalDest = BranchInst::Create(II->getNormalDest(), CB.getIterator()); in InlineFunction()
2939 AfterCallBB = OrigBB->splitBasicBlock(CB.getIterator(), in InlineFunction()
2971 if (!CB.use_empty()) { in InlineFunction()
2972 PHI = PHINode::Create(RTy, Returns.size(), CB.getName()); in InlineFunction()
2976 CB.replaceAllUsesWith(PHI); in InlineFunction()
3006 if (!CB.use_empty()) { in InlineFunction()
3007 if (&CB == Returns[0]->getReturnValue()) in InlineFunction()
3008 CB.replaceAllUsesWith(PoisonValue::get(CB.getType())); in InlineFunction()
3010 CB.replaceAllUsesWith(Returns[0]->getReturnValue()); in InlineFunction()
3027 } else if (!CB.use_empty()) { in InlineFunction()
3030 CB.replaceAllUsesWith(PoisonValue::get(CB.getType())); in InlineFunction()
3034 CB.eraseFromParent(); in InlineFunction()