Skip to content

Commit 507e59a

Browse files
authored
[TBAA] Tests for invalid tbaa.struct metadata (#86167)
These tests show invalid tbaa.struct metadata that is currently accepted in preparation for a change to the IR Verifier that will then reject it. PR: #86167
1 parent b311756 commit 507e59a

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

llvm/test/Verifier/tbaa-struct.ll

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
; RUN: llvm-as < %s 2>&1
2+
3+
; FIXME: The verifer should reject the invalid !tbaa.struct nodes below.
4+
5+
define void @test_overlapping_regions(ptr %a1) {
6+
%ld = load i8, ptr %a1, align 1, !tbaa.struct !0
7+
ret void
8+
}
9+
10+
define void @test_size_not_integer(ptr %a1) {
11+
store i8 1, ptr %a1, align 1, !tbaa.struct !5
12+
ret void
13+
}
14+
15+
define void @test_offset_not_integer(ptr %a1, ptr %a2) {
16+
tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %a1, ptr align 8 %a2, i64 16, i1 false), !tbaa.struct !6
17+
ret void
18+
}
19+
20+
define void @test_tbaa_missing(ptr %a1, ptr %a2) {
21+
tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %a1, ptr align 8 %a2, i64 16, i1 false), !tbaa.struct !7
22+
ret void
23+
}
24+
25+
define void @test_tbaa_invalid(ptr %a1) {
26+
store i8 1, ptr %a1, align 1, !tbaa.struct !8
27+
ret void
28+
}
29+
30+
declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind
31+
32+
!0 = !{i64 0, i64 4, !1, i64 1, i64 4, !1}
33+
!1 = !{!2, !2, i64 0}
34+
!2 = !{!"int", !3, i64 0}
35+
!3 = !{!"omnipotent char", !4, i64 0}
36+
!4 = !{!"Simple C++ TBAA"}
37+
!5 = !{i64 0, !2, !1}
38+
!6 = !{!2, i64 0, !1}
39+
!7 = !{i64 0, i64 4, null}
40+
!8 = !{i64 0, i64 4, !2}

0 commit comments

Comments
 (0)