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 = It->second;
327 CallInfo &CInfo) {
335 CInfo.Kind = BPFPreserveArrayAI;
336 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
337 if (!CInfo.Metadata)
339 CInfo.AccessIndex = getConstant(Call->getArgOperand(2));
340 CInfo.Base = Call->getArgOperand(0);
341 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call));
345 CInfo.Kind = BPFPreserveUnionAI;
346 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
347 if (!CInfo.Metadata)
349 ResetMetadata(CInfo);
350 CInfo.AccessIndex = getConstant(Call->getArgOperand(1));
351 CInfo.Base = Call->getArgOperand(0);
355 CInfo.Kind = BPFPreserveStructAI;
356 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
357 if (!CInfo.Metadata)
359 ResetMetadata(CInfo);
360 CInfo.AccessIndex = getConstant(Call->getArgOperand(2));
361 CInfo.Base = Call->getArgOperand(0);
362 CInfo.RecordAlignment = DL->getABITypeAlign(getBaseElementType(Call));
366 CInfo.Kind = BPFPreserveFieldInfoAI;
367 CInfo.Metadata = nullptr;
372 CInfo.AccessIndex = InfoKind;
376 CInfo.Kind = BPFPreserveFieldInfoAI;
377 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
378 if (!CInfo.Metadata)
384 CInfo.AccessIndex = BTF::TYPE_EXISTENCE;
386 CInfo.AccessIndex = BTF::TYPE_MATCH;
388 CInfo.AccessIndex = BTF::TYPE_SIZE;
392 CInfo.Kind = BPFPreserveFieldInfoAI;
393 CInfo.Metadata = Call->getMetadata(LLVMContext::MD_preserve_access_index);
394 if (!CInfo.Metadata)
400 CInfo.AccessIndex = BTF::ENUM_VALUE_EXISTENCE;
402 CInfo.AccessIndex = BTF::ENUM_VALUE;
451 CallInfo CInfo;
452 if (!IsPreserveDIAccessIndexCall(Call, CInfo))
456 if (CInfo.Kind == BPFPreserveArrayAI)
458 else if (CInfo.Kind == BPFPreserveUnionAI)
634 CallInfo CInfo;
636 if (!IsPreserveDIAccessIndexCall(Call, CInfo) ||
640 traceAICall(Call, CInfo);
829 CallInfo &CInfo,
838 CallStack.push(std::make_pair(Call, CInfo));
839 CInfo = AIChain[Call].second;
859 CInfo = StackElem.second;
862 Base = CInfo.Base;
864 DIType *PossibleTypeDef = stripQualifiers(cast<DIType>(CInfo.Metadata),
867 if (CInfo.Kind == BPFPreserveUnionAI ||
868 CInfo.Kind == BPFPreserveStructAI) {
877 assert(CInfo.Kind == BPFPreserveArrayAI);
883 uint64_t AccessIndex = CInfo.AccessIndex;
940 CInfo = StackElem.second;
943 if (CInfo.Kind == BPFPreserveFieldInfoAI) {
944 InfoKind = CInfo.AccessIndex;
962 uint64_t AccessIndex = CInfo.AccessIndex;
965 MDNode *MDN = CInfo.Metadata;
969 CInfo.RecordAlignment);
985 CallInfo &CInfo,
988 DIType *Ty = stripQualifiers(cast<DIType>(CInfo.Metadata), false);
993 if (CInfo.AccessIndex == BTF::TYPE_EXISTENCE ||
994 CInfo.AccessIndex == BTF::TYPE_MATCH) {
996 } else if (CInfo.AccessIndex == BTF::TYPE_SIZE) {
1032 if (CInfo.AccessIndex == BTF::ENUM_VALUE) {
1041 std::to_string(CInfo.AccessIndex) + std::string(":") +
1050 CallInfo &CInfo) {
1056 IsInt32Ret = CInfo.Kind == BPFPreserveFieldInfoAI;
1057 if (CInfo.Kind == BPFPreserveFieldInfoAI && CInfo.Metadata) {
1058 TypeMeta = computeAccessKey(Call, CInfo, AccessKey, IsInt32Ret);
1060 Base = computeBaseAndAccessKey(Call, CInfo, AccessKey, TypeMeta);
1084 if (CInfo.Kind == BPFPreserveFieldInfoAI) {