diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/IR/Verifier.h | 11 | ||||
| -rw-r--r-- | llvm/lib/IR/Verifier.cpp | 12 |
2 files changed, 12 insertions, 11 deletions
diff --git a/llvm/include/llvm/IR/Verifier.h b/llvm/include/llvm/IR/Verifier.h index 7efca7865e6..71f727c3d4f 100644 --- a/llvm/include/llvm/IR/Verifier.h +++ b/llvm/include/llvm/IR/Verifier.h @@ -48,7 +48,7 @@ class TBAAVerifier { /// /// \c BitWidth has no meaning if \c IsInvalid is true. typedef std::pair<bool, unsigned> TBAABaseNodeSummary; - DenseMap<MDNode *, TBAABaseNodeSummary> TBAABaseNodes; + DenseMap<const MDNode *, TBAABaseNodeSummary> TBAABaseNodes; /// Maps an alleged scalar TBAA node to a boolean that is true if the said /// TBAA node is a valid scalar TBAA node or false otherwise. @@ -56,11 +56,12 @@ class TBAAVerifier { /// \name Helper functions used by \c visitTBAAMetadata. /// @{ - MDNode *getFieldNodeFromTBAABaseNode(Instruction &I, MDNode *BaseNode, + MDNode *getFieldNodeFromTBAABaseNode(Instruction &I, const MDNode *BaseNode, APInt &Offset); TBAAVerifier::TBAABaseNodeSummary verifyTBAABaseNode(Instruction &I, - MDNode *BaseNode); - TBAABaseNodeSummary verifyTBAABaseNodeImpl(Instruction &I, MDNode *BaseNode); + const MDNode *BaseNode); + TBAABaseNodeSummary verifyTBAABaseNodeImpl(Instruction &I, + const MDNode *BaseNode); bool isValidScalarTBAANode(const MDNode *MD); /// @} @@ -70,7 +71,7 @@ public: : Diagnostic(Diagnostic) {} /// Visit an instruction and return true if it is valid, return false if an /// invalid TBAA is attached. - bool visitTBAAMetadata(Instruction &I, MDNode *MD); + bool visitTBAAMetadata(Instruction &I, const MDNode *MD); }; /// \brief Check a function for errors, useful for use when debugging a diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index d42f5d090d1..57beb42a4a9 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -4533,7 +4533,7 @@ template <typename... Tys> void TBAAVerifier::CheckFailed(Tys &&... Args) { /// TBAA scheme. This means \p BaseNode is either a scalar node, or a /// struct-type node describing an aggregate data structure (like a struct). TBAAVerifier::TBAABaseNodeSummary -TBAAVerifier::verifyTBAABaseNode(Instruction &I, MDNode *BaseNode) { +TBAAVerifier::verifyTBAABaseNode(Instruction &I, const MDNode *BaseNode) { if (BaseNode->getNumOperands() < 2) { CheckFailed("Base nodes must have at least two operands", &I, BaseNode); return {true, ~0u}; @@ -4551,7 +4551,7 @@ TBAAVerifier::verifyTBAABaseNode(Instruction &I, MDNode *BaseNode) { } TBAAVerifier::TBAABaseNodeSummary -TBAAVerifier::verifyTBAABaseNodeImpl(Instruction &I, MDNode *BaseNode) { +TBAAVerifier::verifyTBAABaseNodeImpl(Instruction &I, const MDNode *BaseNode) { const TBAAVerifier::TBAABaseNodeSummary InvalidNode = {true, ~0u}; if (BaseNode->getNumOperands() == 2) { @@ -4674,7 +4674,7 @@ bool TBAAVerifier::isValidScalarTBAANode(const MDNode *MD) { /// /// We assume we've okayed \p BaseNode via \c verifyTBAABaseNode. MDNode *TBAAVerifier::getFieldNodeFromTBAABaseNode(Instruction &I, - MDNode *BaseNode, + const MDNode *BaseNode, APInt &Offset) { assert(BaseNode->getNumOperands() >= 2 && "Invalid base node!"); @@ -4708,10 +4708,10 @@ MDNode *TBAAVerifier::getFieldNodeFromTBAABaseNode(Instruction &I, return cast<MDNode>(BaseNode->getOperand(BaseNode->getNumOperands() - 2)); } -bool TBAAVerifier::visitTBAAMetadata(Instruction &I, MDNode *MD) { +bool TBAAVerifier::visitTBAAMetadata(Instruction &I, const MDNode *MD) { AssertTBAA(isa<LoadInst>(I) || isa<StoreInst>(I) || isa<CallInst>(I) || - isa<VAArgInst>(I) || isa<AtomicRMWInst>(I) || - isa<AtomicCmpXchgInst>(I), + isa<VAArgInst>(I) || isa<AtomicRMWInst>(I) || + isa<AtomicCmpXchgInst>(I), "TBAA is only for loads, stores and calls!", &I); bool IsStructPathTBAA = |

