Lines Matching refs:CInfo
158 void ResetMetadata(struct CallInfo &CInfo);
182 Value *computeBaseAndAccessKey(CallInst *Call, CallInfo &CInfo,
184 MDNode *computeAccessKey(CallInst *Call, CallInfo &CInfo,
187 bool transformGEPChain(CallInst *Call, CallInfo &CInfo);
250 void BPFAbstractMemberAccess::ResetMetadata(struct CallInfo &CInfo) { in ResetMetadata() argument
251 if (auto Ty = dyn_cast<DICompositeType>(CInfo.Metadata)) { in ResetMetadata()
254 CInfo.Metadata = AnonRecords[Ty]; in ResetMetadata()
356 CallInfo &CInfo) { in IsPreserveDIAccessIndexCall() argument
364 CInfo.Kind = BPFPreserveArrayAI; in IsPreserveDIAccessIndexCall()
365 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
366 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
368 CInfo.AccessIndex = getConstant(Call->getArgOperand(2)); in IsPreserveDIAccessIndexCall()
369 CInfo.Base = Call->getArgOperand(0); in IsPreserveDIAccessIndexCall()
370 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call)); in IsPreserveDIAccessIndexCall()
374 CInfo.Kind = BPFPreserveUnionAI; in IsPreserveDIAccessIndexCall()
375 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
376 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
378 ResetMetadata(CInfo); in IsPreserveDIAccessIndexCall()
379 CInfo.AccessIndex = getConstant(Call->getArgOperand(1)); in IsPreserveDIAccessIndexCall()
380 CInfo.Base = Call->getArgOperand(0); in IsPreserveDIAccessIndexCall()
384 CInfo.Kind = BPFPreserveStructAI; in IsPreserveDIAccessIndexCall()
385 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
386 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
388 ResetMetadata(CInfo); in IsPreserveDIAccessIndexCall()
389 CInfo.AccessIndex = getConstant(Call->getArgOperand(2)); in IsPreserveDIAccessIndexCall()
390 CInfo.Base = Call->getArgOperand(0); in IsPreserveDIAccessIndexCall()
391 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call)); in IsPreserveDIAccessIndexCall()
395 CInfo.Kind = BPFPreserveFieldInfoAI; in IsPreserveDIAccessIndexCall()
396 CInfo.Metadata = nullptr; in IsPreserveDIAccessIndexCall()
401 CInfo.AccessIndex = InfoKind; in IsPreserveDIAccessIndexCall()
405 CInfo.Kind = BPFPreserveFieldInfoAI; in IsPreserveDIAccessIndexCall()
406 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
407 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
413 CInfo.AccessIndex = BPFCoreSharedInfo::TYPE_EXISTENCE; in IsPreserveDIAccessIndexCall()
415 CInfo.AccessIndex = BPFCoreSharedInfo::TYPE_MATCH; in IsPreserveDIAccessIndexCall()
417 CInfo.AccessIndex = BPFCoreSharedInfo::TYPE_SIZE; in IsPreserveDIAccessIndexCall()
421 CInfo.Kind = BPFPreserveFieldInfoAI; in IsPreserveDIAccessIndexCall()
422 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index); in IsPreserveDIAccessIndexCall()
423 if (!CInfo.Metadata) in IsPreserveDIAccessIndexCall()
429 CInfo.AccessIndex = BPFCoreSharedInfo::ENUM_VALUE_EXISTENCE; in IsPreserveDIAccessIndexCall()
431 CInfo.AccessIndex = BPFCoreSharedInfo::ENUM_VALUE; in IsPreserveDIAccessIndexCall()
469 CallInfo CInfo; in removePreserveAccessIndexIntrinsic() local
470 if (!IsPreserveDIAccessIndexCall(Call, CInfo)) in removePreserveAccessIndexIntrinsic()
474 if (CInfo.Kind == BPFPreserveArrayAI) in removePreserveAccessIndexIntrinsic()
476 else if (CInfo.Kind == BPFPreserveUnionAI) in removePreserveAccessIndexIntrinsic()
652 CallInfo CInfo; in collectAICallChains() local
654 if (!IsPreserveDIAccessIndexCall(Call, CInfo) || in collectAICallChains()
658 traceAICall(Call, CInfo); in collectAICallChains()
853 CallInfo &CInfo, in computeBaseAndAccessKey() argument
862 CallStack.push(std::make_pair(Call, CInfo)); in computeBaseAndAccessKey()
863 CInfo = AIChain[Call].second; in computeBaseAndAccessKey()
883 CInfo = StackElem.second; in computeBaseAndAccessKey()
886 Base = CInfo.Base; in computeBaseAndAccessKey()
888 DIType *PossibleTypeDef = stripQualifiers(cast<DIType>(CInfo.Metadata), in computeBaseAndAccessKey()
891 if (CInfo.Kind == BPFPreserveUnionAI || in computeBaseAndAccessKey()
892 CInfo.Kind == BPFPreserveStructAI) { in computeBaseAndAccessKey()
901 assert(CInfo.Kind == BPFPreserveArrayAI); in computeBaseAndAccessKey()
907 uint64_t AccessIndex = CInfo.AccessIndex; in computeBaseAndAccessKey()
964 CInfo = StackElem.second; in computeBaseAndAccessKey()
967 if (CInfo.Kind == BPFPreserveFieldInfoAI) { in computeBaseAndAccessKey()
968 InfoKind = CInfo.AccessIndex; in computeBaseAndAccessKey()
986 uint64_t AccessIndex = CInfo.AccessIndex; in computeBaseAndAccessKey()
989 MDNode *MDN = CInfo.Metadata; in computeBaseAndAccessKey()
993 CInfo.RecordAlignment); in computeBaseAndAccessKey()
1009 CallInfo &CInfo, in computeAccessKey() argument
1012 DIType *Ty = stripQualifiers(cast<DIType>(CInfo.Metadata), false); in computeAccessKey()
1017 if (CInfo.AccessIndex == BPFCoreSharedInfo::TYPE_EXISTENCE || in computeAccessKey()
1018 CInfo.AccessIndex == BPFCoreSharedInfo::TYPE_MATCH) { in computeAccessKey()
1020 } else if (CInfo.AccessIndex == BPFCoreSharedInfo::TYPE_SIZE) { in computeAccessKey()
1056 if (CInfo.AccessIndex == BPFCoreSharedInfo::ENUM_VALUE) { in computeAccessKey()
1065 std::to_string(CInfo.AccessIndex) + std::string(":") + in computeAccessKey()
1074 CallInfo &CInfo) { in transformGEPChain() argument
1080 IsInt32Ret = CInfo.Kind == BPFPreserveFieldInfoAI; in transformGEPChain()
1081 if (CInfo.Kind == BPFPreserveFieldInfoAI && CInfo.Metadata) { in transformGEPChain()
1082 TypeMeta = computeAccessKey(Call, CInfo, AccessKey, IsInt32Ret); in transformGEPChain()
1084 Base = computeBaseAndAccessKey(Call, CInfo, AccessKey, TypeMeta); in transformGEPChain()
1108 if (CInfo.Kind == BPFPreserveFieldInfoAI) { in transformGEPChain()