| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- ; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
- define void @f1(i8* %x) {
- entry:
- store i8 0, i8* %x, align 1, !range !0
- ret void
- }
- !0 = !{i8 0, i8 1}
- ; CHECK: Ranges are only for loads, calls and invokes!
- ; CHECK-NEXT: store i8 0, i8* %x, align 1, !range !0
- define i8 @f2(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !1
- ret i8 %y
- }
- !1 = !{}
- ; CHECK: It should have at least one range!
- define i8 @f3(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !2
- ret i8 %y
- }
- !2 = !{i8 0}
- ; CHECK: Unfinished range!
- define i8 @f4(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !3
- ret i8 %y
- }
- !3 = !{double 0.0, i8 0}
- ; CHECK: The lower limit must be an integer!
- define i8 @f5(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !4
- ret i8 %y
- }
- !4 = !{i8 0, double 0.0}
- ; CHECK: The upper limit must be an integer!
- define i8 @f6(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !5
- ret i8 %y
- }
- !5 = !{i32 0, i8 0}
- ; CHECK: Range types must match instruction type!
- ; CHECK: %y = load
- define i8 @f7(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !6
- ret i8 %y
- }
- !6 = !{i8 0, i32 0}
- ; CHECK: Range types must match instruction type!
- ; CHECK: %y = load
- define i8 @f8(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !7
- ret i8 %y
- }
- !7 = !{i32 0, i32 0}
- ; CHECK: Range types must match instruction type!
- ; CHECK: %y = load
- define i8 @f9(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !8
- ret i8 %y
- }
- !8 = !{i8 0, i8 0}
- ; CHECK: Range must not be empty!
- define i8 @f10(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !9
- ret i8 %y
- }
- !9 = !{i8 0, i8 2, i8 1, i8 3}
- ; CHECK: Intervals are overlapping
- define i8 @f11(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !10
- ret i8 %y
- }
- !10 = !{i8 0, i8 2, i8 2, i8 3}
- ; CHECK: Intervals are contiguous
- define i8 @f12(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !11
- ret i8 %y
- }
- !11 = !{i8 1, i8 2, i8 -1, i8 0}
- ; CHECK: Intervals are not in order
- define i8 @f13(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !12
- ret i8 %y
- }
- !12 = !{i8 1, i8 3, i8 5, i8 1}
- ; CHECK: Intervals are contiguous
- define i8 @f14(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !13
- ret i8 %y
- }
- !13 = !{i8 1, i8 3, i8 5, i8 2}
- ; CHECK: Intervals are overlapping
- define i8 @f15(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !14
- ret i8 %y
- }
- !14 = !{i8 10, i8 1, i8 12, i8 13}
- ; CHECK: Intervals are overlapping
- define i8 @f16(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !16
- ret i8 %y
- }
- !16 = !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 2}
- ; CHECK: Intervals are overlapping
- define i8 @f17(i8* %x) {
- entry:
- %y = load i8, i8* %x, align 1, !range !17
- ret i8 %y
- }
- !17 = !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 1}
- ; CHECK: Intervals are contiguous
- define i8 @f18() {
- entry:
- %y = call i8 undef(), !range !18
- ret i8 %y
- }
- !18 = !{}
- ; CHECK: It should have at least one range!
|