Lines Matching defs: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) {
223 if (auto Ty = dyn_cast<DICompositeType>(CInfo.Metadata)) {
226 CInfo.Metadata = AnonRecords[Ty];
334 CallInfo &CInfo) {
342 CInfo.Kind = BPFPreserveArrayAI;
343 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
344 if (!CInfo.Metadata)
346 CInfo.AccessIndex = getConstant(Call->getArgOperand(2));
347 CInfo.Base = Call->getArgOperand(0);
348 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call));
352 CInfo.Kind = BPFPreserveUnionAI;
353 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
354 if (!CInfo.Metadata)
356 ResetMetadata(CInfo);
357 CInfo.AccessIndex = getConstant(Call->getArgOperand(1));
358 CInfo.Base = Call->getArgOperand(0);
362 CInfo.Kind = BPFPreserveStructAI;
363 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
364 if (!CInfo.Metadata)
366 ResetMetadata(CInfo);
367 CInfo.AccessIndex = getConstant(Call->getArgOperand(2));
368 CInfo.Base = Call->getArgOperand(0);
369 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call));
373 CInfo.Kind = BPFPreserveFieldInfoAI;
374 CInfo.Metadata = nullptr;
379 CInfo.AccessIndex = InfoKind;
383 CInfo.Kind = BPFPreserveFieldInfoAI;
384 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
385 if (!CInfo.Metadata)
391 CInfo.AccessIndex = BTF::TYPE_EXISTENCE;
393 CInfo.AccessIndex = BTF::TYPE_MATCH;
395 CInfo.AccessIndex = BTF::TYPE_SIZE;
399 CInfo.Kind = BPFPreserveFieldInfoAI;
400 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
401 if (!CInfo.Metadata)
407 CInfo.AccessIndex = BTF::ENUM_VALUE_EXISTENCE;
409 CInfo.AccessIndex = BTF::ENUM_VALUE;
458 CallInfo CInfo;
459 if (!IsPreserveDIAccessIndexCall(Call, CInfo))
463 if (CInfo.Kind == BPFPreserveArrayAI)
465 else if (CInfo.Kind == BPFPreserveUnionAI)
641 CallInfo CInfo;
643 if (!IsPreserveDIAccessIndexCall(Call, CInfo) ||
647 traceAICall(Call, CInfo);
836 CallInfo &CInfo,
845 CallStack.push(std::make_pair(Call, CInfo));
846 CInfo = AIChain[Call].second;
866 CInfo = StackElem.second;
869 Base = CInfo.Base;
871 DIType *PossibleTypeDef = stripQualifiers(cast<DIType>(CInfo.Metadata),
874 if (CInfo.Kind == BPFPreserveUnionAI ||
875 CInfo.Kind == BPFPreserveStructAI) {
884 assert(CInfo.Kind == BPFPreserveArrayAI);
890 uint64_t AccessIndex = CInfo.AccessIndex;
947 CInfo = StackElem.second;
950 if (CInfo.Kind == BPFPreserveFieldInfoAI) {
951 InfoKind = CInfo.AccessIndex;
969 uint64_t AccessIndex = CInfo.AccessIndex;
972 MDNode *MDN = CInfo.Metadata;
976 CInfo.RecordAlignment);
992 CallInfo &CInfo,
995 DIType *Ty = stripQualifiers(cast<DIType>(CInfo.Metadata), false);
1000 if (CInfo.AccessIndex == BTF::TYPE_EXISTENCE ||
1001 CInfo.AccessIndex == BTF::TYPE_MATCH) {
1003 } else if (CInfo.AccessIndex == BTF::TYPE_SIZE) {
1039 if (CInfo.AccessIndex == BTF::ENUM_VALUE) {
1048 std::to_string(CInfo.AccessIndex) + std::string(":") +
1057 CallInfo &CInfo) {
1063 IsInt32Ret = CInfo.Kind == BPFPreserveFieldInfoAI;
1064 if (CInfo.Kind == BPFPreserveFieldInfoAI && CInfo.Metadata) {
1065 TypeMeta = computeAccessKey(Call, CInfo, AccessKey, IsInt32Ret);
1067 Base = computeBaseAndAccessKey(Call, CInfo, AccessKey, TypeMeta);
1091 if (CInfo.Kind == BPFPreserveFieldInfoAI) {