Lines Matching refs:CInfo

160   void ResetMetadata(struct CallInfo &CInfo);
182 Value *computeBaseAndAccessKey(CallInst *Call, CallInfo &CInfo,
184 MDNode *computeAccessKey(CallInst *Call, CallInfo &CInfo,
186 bool transformGEPChain(CallInst *Call, CallInfo &CInfo);
222 void BPFAbstractMemberAccess::ResetMetadata(struct CallInfo &CInfo) { in ResetMetadata() argument
223 if (auto Ty = dyn_cast<DICompositeType>(CInfo.Metadata)) { in ResetMetadata()
226 CInfo.Metadata = AnonRecords[Ty]; in ResetMetadata()
334 CallInfo &CInfo) { in IsPreserveDIAccessIndexCall() argument
342 CInfo.Kind = BPFPreserveArrayAI; in IsPreserveDIAccessIndexCall()
343 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
344 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
346 CInfo.AccessIndex = getConstant(Call->getArgOperand(2)); in IsPreserveDIAccessIndexCall()
347 CInfo.Base = Call->getArgOperand(0); in IsPreserveDIAccessIndexCall()
348 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call)); in IsPreserveDIAccessIndexCall()
352 CInfo.Kind = BPFPreserveUnionAI; in IsPreserveDIAccessIndexCall()
353 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
354 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
356 ResetMetadata(CInfo); in IsPreserveDIAccessIndexCall()
357 CInfo.AccessIndex = getConstant(Call->getArgOperand(1)); in IsPreserveDIAccessIndexCall()
358 CInfo.Base = Call->getArgOperand(0); in IsPreserveDIAccessIndexCall()
362 CInfo.Kind = BPFPreserveStructAI; in IsPreserveDIAccessIndexCall()
363 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
364 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
366 ResetMetadata(CInfo); in IsPreserveDIAccessIndexCall()
367 CInfo.AccessIndex = getConstant(Call->getArgOperand(2)); in IsPreserveDIAccessIndexCall()
368 CInfo.Base = Call->getArgOperand(0); in IsPreserveDIAccessIndexCall()
369 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call)); in IsPreserveDIAccessIndexCall()
373 CInfo.Kind = BPFPreserveFieldInfoAI; in IsPreserveDIAccessIndexCall()
374 CInfo.Metadata = nullptr; in IsPreserveDIAccessIndexCall()
379 CInfo.AccessIndex = InfoKind; in IsPreserveDIAccessIndexCall()
383 CInfo.Kind = BPFPreserveFieldInfoAI; in IsPreserveDIAccessIndexCall()
384 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
385 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
391 CInfo.AccessIndex = BTF::TYPE_EXISTENCE; in IsPreserveDIAccessIndexCall()
393 CInfo.AccessIndex = BTF::TYPE_MATCH; in IsPreserveDIAccessIndexCall()
395 CInfo.AccessIndex = BTF::TYPE_SIZE; in IsPreserveDIAccessIndexCall()
399 CInfo.Kind = BPFPreserveFieldInfoAI; in IsPreserveDIAccessIndexCall()
400 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
401 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
407 CInfo.AccessIndex = BTF::ENUM_VALUE_EXISTENCE; in IsPreserveDIAccessIndexCall()
409 CInfo.AccessIndex = BTF::ENUM_VALUE; in IsPreserveDIAccessIndexCall()
457 CallInfo CInfo; in removePreserveAccessIndexIntrinsic() local
458 if (!IsPreserveDIAccessIndexCall(Call, CInfo)) in removePreserveAccessIndexIntrinsic()
462 if (CInfo.Kind == BPFPreserveArrayAI) in removePreserveAccessIndexIntrinsic()
464 else if (CInfo.Kind == BPFPreserveUnionAI) in removePreserveAccessIndexIntrinsic()
640 CallInfo CInfo; in collectAICallChains() local
642 if (!IsPreserveDIAccessIndexCall(Call, CInfo) || in collectAICallChains()
646 traceAICall(Call, CInfo); in collectAICallChains()
835 CallInfo &CInfo, in computeBaseAndAccessKey() argument
844 CallStack.push(std::make_pair(Call, CInfo)); in computeBaseAndAccessKey()
845 CInfo = AIChain[Call].second; in computeBaseAndAccessKey()
865 CInfo = StackElem.second; in computeBaseAndAccessKey()
868 Base = CInfo.Base; in computeBaseAndAccessKey()
870 DIType *PossibleTypeDef = stripQualifiers(cast<DIType>(CInfo.Metadata), in computeBaseAndAccessKey()
873 if (CInfo.Kind == BPFPreserveUnionAI || in computeBaseAndAccessKey()
874 CInfo.Kind == BPFPreserveStructAI) { in computeBaseAndAccessKey()
883 assert(CInfo.Kind == BPFPreserveArrayAI); in computeBaseAndAccessKey()
889 uint64_t AccessIndex = CInfo.AccessIndex; in computeBaseAndAccessKey()
946 CInfo = StackElem.second; in computeBaseAndAccessKey()
949 if (CInfo.Kind == BPFPreserveFieldInfoAI) { in computeBaseAndAccessKey()
950 InfoKind = CInfo.AccessIndex; in computeBaseAndAccessKey()
968 uint64_t AccessIndex = CInfo.AccessIndex; in computeBaseAndAccessKey()
971 MDNode *MDN = CInfo.Metadata; in computeBaseAndAccessKey()
975 CInfo.RecordAlignment); in computeBaseAndAccessKey()
991 CallInfo &CInfo, in computeAccessKey() argument
994 DIType *Ty = stripQualifiers(cast<DIType>(CInfo.Metadata), false); in computeAccessKey()
999 if (CInfo.AccessIndex == BTF::TYPE_EXISTENCE || in computeAccessKey()
1000 CInfo.AccessIndex == BTF::TYPE_MATCH) { in computeAccessKey()
1002 } else if (CInfo.AccessIndex == BTF::TYPE_SIZE) { in computeAccessKey()
1038 if (CInfo.AccessIndex == BTF::ENUM_VALUE) { in computeAccessKey()
1047 std::to_string(CInfo.AccessIndex) + std::string(":") + in computeAccessKey()
1056 CallInfo &CInfo) { in transformGEPChain() argument
1062 IsInt32Ret = CInfo.Kind == BPFPreserveFieldInfoAI; in transformGEPChain()
1063 if (CInfo.Kind == BPFPreserveFieldInfoAI && CInfo.Metadata) { in transformGEPChain()
1064 TypeMeta = computeAccessKey(Call, CInfo, AccessKey, IsInt32Ret); in transformGEPChain()
1066 Base = computeBaseAndAccessKey(Call, CInfo, AccessKey, TypeMeta); in transformGEPChain()
1090 if (CInfo.Kind == BPFPreserveFieldInfoAI) { in transformGEPChain()