Lines Matching defs:BaseNode
7393 /// Verify that \p BaseNode can be used as the "base type" in the struct-path
7394 /// TBAA scheme. This means \p BaseNode is either a scalar node, or a
7397 TBAAVerifier::verifyTBAABaseNode(Instruction &I, const MDNode *BaseNode,
7399 if (BaseNode->getNumOperands() < 2) {
7400 CheckFailed("Base nodes must have at least two operands", &I, BaseNode);
7404 auto Itr = TBAABaseNodes.find(BaseNode);
7408 auto Result = verifyTBAABaseNodeImpl(I, BaseNode, IsNewFormat);
7409 auto InsertResult = TBAABaseNodes.insert({BaseNode, Result});
7416 TBAAVerifier::verifyTBAABaseNodeImpl(Instruction &I, const MDNode *BaseNode,
7420 if (BaseNode->getNumOperands() == 2) {
7422 return isValidScalarTBAANode(BaseNode)
7428 if (BaseNode->getNumOperands() % 3 != 0) {
7430 "multiple of 3!", BaseNode);
7434 if (BaseNode->getNumOperands() % 2 != 1) {
7436 BaseNode);
7444 BaseNode->getOperand(1));
7446 CheckFailed("Type size nodes must be constants!", &I, BaseNode);
7452 if (!IsNewFormat && !isa<MDString>(BaseNode->getOperand(0))) {
7454 BaseNode);
7463 // We've already checked that BaseNode is not a degenerate root node with one
7467 for (unsigned Idx = FirstFieldOpNo; Idx < BaseNode->getNumOperands();
7469 const MDOperand &FieldTy = BaseNode->getOperand(Idx);
7470 const MDOperand &FieldOffset = BaseNode->getOperand(Idx + 1);
7472 CheckFailed("Incorrect field entry in struct type node!", &I, BaseNode);
7480 CheckFailed("Offset entries must be constants!", &I, BaseNode);
7491 BaseNode);
7505 CheckFailed("Offsets must be increasing!", &I, BaseNode);
7513 BaseNode->getOperand(Idx + 2));
7515 CheckFailed("Member size entries must be constants!", &I, BaseNode);
7563 /// Returns the field node at the offset \p Offset in \p BaseNode. Update \p
7566 /// We assume we've okayed \p BaseNode via \c verifyTBAABaseNode.
7568 const MDNode *BaseNode,
7571 assert(BaseNode->getNumOperands() >= 2 && "Invalid base node!");
7576 if (BaseNode->getNumOperands() == 2)
7577 return cast<MDNode>(BaseNode->getOperand(1));
7581 for (unsigned Idx = FirstFieldOpNo; Idx < BaseNode->getNumOperands();
7584 mdconst::extract<ConstantInt>(BaseNode->getOperand(Idx + 1));
7588 BaseNode, &Offset);
7594 mdconst::extract<ConstantInt>(BaseNode->getOperand(PrevIdx + 1));
7596 return cast<MDNode>(BaseNode->getOperand(PrevIdx));
7600 unsigned LastIdx = BaseNode->getNumOperands() - NumOpsPerField;
7602 BaseNode->getOperand(LastIdx + 1));
7604 return cast<MDNode>(BaseNode->getOperand(LastIdx));
7632 MDNode *BaseNode = dyn_cast_or_null<MDNode>(MD->getOperand(0));
7666 CheckTBAA(BaseNode && AccessType,
7669 &I, MD, BaseNode, AccessType);
7685 for (/* empty */; BaseNode && !IsRootTBAANode(BaseNode);
7686 BaseNode = getFieldNodeFromTBAABaseNode(I, BaseNode, Offset,
7688 if (!StructPath.insert(BaseNode).second) {
7695 std::tie(Invalid, BaseNodeBitWidth) = verifyTBAABaseNode(I, BaseNode,
7703 SeenAccessTypeInPath |= BaseNode == AccessType;
7705 if (isValidScalarTBAANode(BaseNode) || BaseNode == AccessType)