[llvm] ac0561e - [Verifier] Add context for assume operand bundles verifier errors
Arthur Eubanks via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 19 09:52:43 PDT 2021
Author: Arthur Eubanks
Date: 2021-10-19T09:52:04-07:00
New Revision: ac0561ebb734e6241d76c4661507960e8a6dfb20
URL: https://github.com/llvm/llvm-project/commit/ac0561ebb734e6241d76c4661507960e8a6dfb20
DIFF: https://github.com/llvm/llvm-project/commit/ac0561ebb734e6241d76c4661507960e8a6dfb20.diff
LOG: [Verifier] Add context for assume operand bundles verifier errors
And fix a typo.
Added:
Modified:
llvm/lib/IR/Verifier.cpp
llvm/test/Verifier/assume-bundles.ll
Removed:
################################################################################
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 390f13643b28a..5a84561758054 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -4652,33 +4652,34 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
for (auto &Elem : Call.bundle_op_infos()) {
Assert(Elem.Tag->getKey() == "ignore" ||
Attribute::isExistingAttribute(Elem.Tag->getKey()),
- "tags must be valid attribute names");
+ "tags must be valid attribute names", Call);
Attribute::AttrKind Kind =
Attribute::getAttrKindFromName(Elem.Tag->getKey());
unsigned ArgCount = Elem.End - Elem.Begin;
if (Kind == Attribute::Alignment) {
Assert(ArgCount <= 3 && ArgCount >= 2,
- "alignment assumptions should have 2 or 3 arguments");
+ "alignment assumptions should have 2 or 3 arguments", Call);
Assert(Call.getOperand(Elem.Begin)->getType()->isPointerTy(),
- "first argument should be a pointer");
+ "first argument should be a pointer", Call);
Assert(Call.getOperand(Elem.Begin + 1)->getType()->isIntegerTy(),
- "second argument should be an integer");
+ "second argument should be an integer", Call);
if (ArgCount == 3)
Assert(Call.getOperand(Elem.Begin + 2)->getType()->isIntegerTy(),
- "third argument should be an integer if present");
+ "third argument should be an integer if present", Call);
return;
}
- Assert(ArgCount <= 2, "to many arguments");
+ Assert(ArgCount <= 2, "too many arguments", Call);
if (Kind == Attribute::None)
break;
if (Attribute::isIntAttrKind(Kind)) {
- Assert(ArgCount == 2, "this attribute should have 2 arguments");
+ Assert(ArgCount == 2, "this attribute should have 2 arguments", Call);
Assert(isa<ConstantInt>(Call.getOperand(Elem.Begin + 1)),
- "the second argument should be a constant integral value");
+ "the second argument should be a constant integral value", Call);
} else if (Attribute::canUseAsParamAttr(Kind)) {
- Assert((ArgCount) == 1, "this attribute should have one argument");
+ Assert((ArgCount) == 1, "this attribute should have one argument",
+ Call);
} else if (Attribute::canUseAsFnAttr(Kind)) {
- Assert((ArgCount) == 0, "this attribute has no argument");
+ Assert((ArgCount) == 0, "this attribute has no argument", Call);
}
}
break;
diff --git a/llvm/test/Verifier/assume-bundles.ll b/llvm/test/Verifier/assume-bundles.ll
index 6e260f25129ee..6f866b19d6c14 100644
--- a/llvm/test/Verifier/assume-bundles.ll
+++ b/llvm/test/Verifier/assume-bundles.ll
@@ -5,10 +5,11 @@ declare void @llvm.assume(i1)
define void @func(i32* %P, i32 %P1, i32* %P2, i32* %P3) {
; CHECK: tags must be valid attribute names
+; CHECK: "adazdazd"
call void @llvm.assume(i1 true) ["adazdazd"()]
; CHECK: the second argument should be a constant integral value
call void @llvm.assume(i1 true) ["dereferenceable"(i32* %P, i32 %P1)]
-; CHECK: to many arguments
+; CHECK: too many arguments
call void @llvm.assume(i1 true) ["dereferenceable"(i32* %P, i32 8, i32 8)]
; CHECK: this attribute should have 2 arguments
call void @llvm.assume(i1 true) ["dereferenceable"(i32* %P)]
More information about the llvm-commits
mailing list