diff --git a/llvm/lib/Transforms/Utils/KnowledgeRetention.cpp b/llvm/lib/Transforms/Utils/KnowledgeRetention.cpp index 9cae22b5d61d1..f3c9ee42b77f9 100644 --- a/llvm/lib/Transforms/Utils/KnowledgeRetention.cpp +++ b/llvm/lib/Transforms/Utils/KnowledgeRetention.cpp @@ -229,8 +229,8 @@ bool llvm::hasAttributeInAssume(CallInst &AssumeCI, Value *IsOn, Lookup->Tag->getKey() != AttrName) return false; if (IsOn) { - if (Lookup->End - Lookup->Begin < BOIE_WasOn) - return false; + assert((Lookup->End - Lookup->Begin > BOIE_WasOn) && + "missing argument of attribute"); while (true) { if (Lookup == Assume.bundle_op_info_end() || Lookup->Tag->getKey() != AttrName) diff --git a/llvm/unittests/Transforms/Utils/KnowledgeRetentionTest.cpp b/llvm/unittests/Transforms/Utils/KnowledgeRetentionTest.cpp index 229098d1cfc43..5c84a25745e59 100644 --- a/llvm/unittests/Transforms/Utils/KnowledgeRetentionTest.cpp +++ b/llvm/unittests/Transforms/Utils/KnowledgeRetentionTest.cpp @@ -51,8 +51,9 @@ void AssertMatchesExactlyAttributes(CallInst *Assume, Value *WasOn, #include "llvm/IR/Attributes.inc" }) { bool ShouldHaveAttr = Reg.match(Attr, &Matches) && Matches[0] == Attr; - if (ShouldHaveAttr != hasAttributeInAssume(*Assume, WasOn, Attr)) + if (ShouldHaveAttr != hasAttributeInAssume(*Assume, WasOn, Attr)) { ASSERT_TRUE(false); + } } } @@ -71,10 +72,12 @@ void AssertHasTheRightValue(CallInst *Assume, Value *WasOn, AssumeQuery::Lowest); bool ResultHigh = hasAttributeInAssume(*Assume, WasOn, Kind, &ArgValHigh, AssumeQuery::Highest); - if (ResultLow != ResultHigh) + if (ResultLow != ResultHigh || ResultHigh == false) { ASSERT_TRUE(false); - if (ArgValLow != Value || ArgValLow != ArgValHigh) - ASSERT_EQ(ArgValLow, Value); + } + if (ArgValLow != Value || ArgValLow != ArgValHigh) { + ASSERT_TRUE(false); + } } TEST(AssumeQueryAPI, Basic) {