Mercurial > hg > CbC > CbC_llvm
comparison test/Verifier/range-1.ll @ 85:5e5d649e25d2
Update LLVM 3.7
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Feb 2015 15:19:25 +0900 |
parents | 60c9769439b8 |
children | afa8332a0e37 |
comparison
equal
deleted
inserted
replaced
82:e218c19a8176 | 85:5e5d649e25d2 |
---|---|
3 define void @f1(i8* %x) { | 3 define void @f1(i8* %x) { |
4 entry: | 4 entry: |
5 store i8 0, i8* %x, align 1, !range !0 | 5 store i8 0, i8* %x, align 1, !range !0 |
6 ret void | 6 ret void |
7 } | 7 } |
8 !0 = metadata !{i8 0, i8 1} | 8 !0 = !{i8 0, i8 1} |
9 ; CHECK: Ranges are only for loads, calls and invokes! | 9 ; CHECK: Ranges are only for loads, calls and invokes! |
10 ; CHECK-NEXT: store i8 0, i8* %x, align 1, !range !0 | 10 ; CHECK-NEXT: store i8 0, i8* %x, align 1, !range !0 |
11 | 11 |
12 define i8 @f2(i8* %x) { | 12 define i8 @f2(i8* %x) { |
13 entry: | 13 entry: |
14 %y = load i8* %x, align 1, !range !1 | 14 %y = load i8* %x, align 1, !range !1 |
15 ret i8 %y | 15 ret i8 %y |
16 } | 16 } |
17 !1 = metadata !{} | 17 !1 = !{} |
18 ; CHECK: It should have at least one range! | 18 ; CHECK: It should have at least one range! |
19 ; CHECK-NEXT: metadata | |
20 | 19 |
21 define i8 @f3(i8* %x) { | 20 define i8 @f3(i8* %x) { |
22 entry: | 21 entry: |
23 %y = load i8* %x, align 1, !range !2 | 22 %y = load i8* %x, align 1, !range !2 |
24 ret i8 %y | 23 ret i8 %y |
25 } | 24 } |
26 !2 = metadata !{i8 0} | 25 !2 = !{i8 0} |
27 ; CHECK: Unfinished range! | 26 ; CHECK: Unfinished range! |
28 | 27 |
29 define i8 @f4(i8* %x) { | 28 define i8 @f4(i8* %x) { |
30 entry: | 29 entry: |
31 %y = load i8* %x, align 1, !range !3 | 30 %y = load i8* %x, align 1, !range !3 |
32 ret i8 %y | 31 ret i8 %y |
33 } | 32 } |
34 !3 = metadata !{double 0.0, i8 0} | 33 !3 = !{double 0.0, i8 0} |
35 ; CHECK: The lower limit must be an integer! | 34 ; CHECK: The lower limit must be an integer! |
36 | 35 |
37 define i8 @f5(i8* %x) { | 36 define i8 @f5(i8* %x) { |
38 entry: | 37 entry: |
39 %y = load i8* %x, align 1, !range !4 | 38 %y = load i8* %x, align 1, !range !4 |
40 ret i8 %y | 39 ret i8 %y |
41 } | 40 } |
42 !4 = metadata !{i8 0, double 0.0} | 41 !4 = !{i8 0, double 0.0} |
43 ; CHECK: The upper limit must be an integer! | 42 ; CHECK: The upper limit must be an integer! |
44 | 43 |
45 define i8 @f6(i8* %x) { | 44 define i8 @f6(i8* %x) { |
46 entry: | 45 entry: |
47 %y = load i8* %x, align 1, !range !5 | 46 %y = load i8* %x, align 1, !range !5 |
48 ret i8 %y | 47 ret i8 %y |
49 } | 48 } |
50 !5 = metadata !{i32 0, i8 0} | 49 !5 = !{i32 0, i8 0} |
51 ; CHECK: Range types must match load type! | 50 ; CHECK: Range types must match instruction type! |
52 ; CHECK: %y = load | 51 ; CHECK: %y = load |
53 | 52 |
54 define i8 @f7(i8* %x) { | 53 define i8 @f7(i8* %x) { |
55 entry: | 54 entry: |
56 %y = load i8* %x, align 1, !range !6 | 55 %y = load i8* %x, align 1, !range !6 |
57 ret i8 %y | 56 ret i8 %y |
58 } | 57 } |
59 !6 = metadata !{i8 0, i32 0} | 58 !6 = !{i8 0, i32 0} |
60 ; CHECK: Range types must match load type! | 59 ; CHECK: Range types must match instruction type! |
61 ; CHECK: %y = load | 60 ; CHECK: %y = load |
62 | 61 |
63 define i8 @f8(i8* %x) { | 62 define i8 @f8(i8* %x) { |
64 entry: | 63 entry: |
65 %y = load i8* %x, align 1, !range !7 | 64 %y = load i8* %x, align 1, !range !7 |
66 ret i8 %y | 65 ret i8 %y |
67 } | 66 } |
68 !7 = metadata !{i32 0, i32 0} | 67 !7 = !{i32 0, i32 0} |
69 ; CHECK: Range types must match load type! | 68 ; CHECK: Range types must match instruction type! |
70 ; CHECK: %y = load | 69 ; CHECK: %y = load |
71 | 70 |
72 define i8 @f9(i8* %x) { | 71 define i8 @f9(i8* %x) { |
73 entry: | 72 entry: |
74 %y = load i8* %x, align 1, !range !8 | 73 %y = load i8* %x, align 1, !range !8 |
75 ret i8 %y | 74 ret i8 %y |
76 } | 75 } |
77 !8 = metadata !{i8 0, i8 0} | 76 !8 = !{i8 0, i8 0} |
78 ; CHECK: Range must not be empty! | 77 ; CHECK: Range must not be empty! |
79 | 78 |
80 define i8 @f10(i8* %x) { | 79 define i8 @f10(i8* %x) { |
81 entry: | 80 entry: |
82 %y = load i8* %x, align 1, !range !9 | 81 %y = load i8* %x, align 1, !range !9 |
83 ret i8 %y | 82 ret i8 %y |
84 } | 83 } |
85 !9 = metadata !{i8 0, i8 2, i8 1, i8 3} | 84 !9 = !{i8 0, i8 2, i8 1, i8 3} |
86 ; CHECK: Intervals are overlapping | 85 ; CHECK: Intervals are overlapping |
87 | 86 |
88 define i8 @f11(i8* %x) { | 87 define i8 @f11(i8* %x) { |
89 entry: | 88 entry: |
90 %y = load i8* %x, align 1, !range !10 | 89 %y = load i8* %x, align 1, !range !10 |
91 ret i8 %y | 90 ret i8 %y |
92 } | 91 } |
93 !10 = metadata !{i8 0, i8 2, i8 2, i8 3} | 92 !10 = !{i8 0, i8 2, i8 2, i8 3} |
94 ; CHECK: Intervals are contiguous | 93 ; CHECK: Intervals are contiguous |
95 | 94 |
96 define i8 @f12(i8* %x) { | 95 define i8 @f12(i8* %x) { |
97 entry: | 96 entry: |
98 %y = load i8* %x, align 1, !range !11 | 97 %y = load i8* %x, align 1, !range !11 |
99 ret i8 %y | 98 ret i8 %y |
100 } | 99 } |
101 !11 = metadata !{i8 1, i8 2, i8 -1, i8 0} | 100 !11 = !{i8 1, i8 2, i8 -1, i8 0} |
102 ; CHECK: Intervals are not in order | 101 ; CHECK: Intervals are not in order |
103 | 102 |
104 define i8 @f13(i8* %x) { | 103 define i8 @f13(i8* %x) { |
105 entry: | 104 entry: |
106 %y = load i8* %x, align 1, !range !12 | 105 %y = load i8* %x, align 1, !range !12 |
107 ret i8 %y | 106 ret i8 %y |
108 } | 107 } |
109 !12 = metadata !{i8 1, i8 3, i8 5, i8 1} | 108 !12 = !{i8 1, i8 3, i8 5, i8 1} |
110 ; CHECK: Intervals are contiguous | 109 ; CHECK: Intervals are contiguous |
111 | 110 |
112 define i8 @f14(i8* %x) { | 111 define i8 @f14(i8* %x) { |
113 entry: | 112 entry: |
114 %y = load i8* %x, align 1, !range !13 | 113 %y = load i8* %x, align 1, !range !13 |
115 ret i8 %y | 114 ret i8 %y |
116 } | 115 } |
117 !13 = metadata !{i8 1, i8 3, i8 5, i8 2} | 116 !13 = !{i8 1, i8 3, i8 5, i8 2} |
118 ; CHECK: Intervals are overlapping | 117 ; CHECK: Intervals are overlapping |
119 | 118 |
120 define i8 @f15(i8* %x) { | 119 define i8 @f15(i8* %x) { |
121 entry: | 120 entry: |
122 %y = load i8* %x, align 1, !range !14 | 121 %y = load i8* %x, align 1, !range !14 |
123 ret i8 %y | 122 ret i8 %y |
124 } | 123 } |
125 !14 = metadata !{i8 10, i8 1, i8 12, i8 13} | 124 !14 = !{i8 10, i8 1, i8 12, i8 13} |
126 ; CHECK: Intervals are overlapping | 125 ; CHECK: Intervals are overlapping |
127 | 126 |
128 define i8 @f16(i8* %x) { | 127 define i8 @f16(i8* %x) { |
129 entry: | 128 entry: |
130 %y = load i8* %x, align 1, !range !16 | 129 %y = load i8* %x, align 1, !range !16 |
131 ret i8 %y | 130 ret i8 %y |
132 } | 131 } |
133 !16 = metadata !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 2} | 132 !16 = !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 2} |
134 ; CHECK: Intervals are overlapping | 133 ; CHECK: Intervals are overlapping |
135 | 134 |
136 define i8 @f17(i8* %x) { | 135 define i8 @f17(i8* %x) { |
137 entry: | 136 entry: |
138 %y = load i8* %x, align 1, !range !17 | 137 %y = load i8* %x, align 1, !range !17 |
139 ret i8 %y | 138 ret i8 %y |
140 } | 139 } |
141 !17 = metadata !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 1} | 140 !17 = !{i8 1, i8 3, i8 4, i8 5, i8 6, i8 1} |
142 ; CHECK: Intervals are contiguous | 141 ; CHECK: Intervals are contiguous |
142 | |
143 define i8 @f18() { | |
144 entry: | |
145 %y = call i8 undef(), !range !18 | |
146 ret i8 %y | |
147 } | |
148 !18 = !{} | |
149 ; CHECK: It should have at least one range! |