Skip to content

Commit 78bad3b

Browse files
committed
Verkfy llvm.experimental.memset.pattern pattern arg is integral number of bytes
1 parent 4ebc985 commit 78bad3b

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

llvm/lib/IR/Verifier.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5519,8 +5519,12 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
55195519
case Intrinsic::memcpy_inline:
55205520
case Intrinsic::memmove:
55215521
case Intrinsic::memset:
5522-
case Intrinsic::memset_inline:
5522+
case Intrinsic::memset_inline: {
5523+
break;
5524+
}
55235525
case Intrinsic::experimental_memset_pattern: {
5526+
Check(Call.getOperand(1)->getType()->getScalarSizeInBits() % 8 == 0,
5527+
"pattern type must be an integral number of bytes", Call);
55245528
break;
55255529
}
55265530
case Intrinsic::memcpy_element_unordered_atomic:
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
; RUN: not opt -passes=verify < %s 2>&1 | FileCheck %s
2+
3+
; CHECK: pattern type must be an integral number of bytes
4+
5+
define void @foo(ptr %P, i31 %value) {
6+
call void @llvm.experimental.memset.pattern.p0.i31.i32(ptr align 4 %P, i31 %value, i32 4, i1 false)
7+
ret void
8+
}
9+
declare void @llvm.experimental.memset.pattern.p0.i31.i32(ptr nocapture, i31, i32, i1) nounwind

0 commit comments

Comments
 (0)