blob: f8891c83225e87e3b7c0c234efd297ed28b0d0d6 [file] [log] [blame]
Rafael Espindolaef9f5502012-03-24 00:14:51 +00001; RUN: llvm-as < %s -o /dev/null
2
3define i8 @f1(i8* %x) {
4entry:
5 %y = load i8* %x, align 1, !range !0
6 ret i8 %y
7}
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +00008!0 = !{i8 0, i8 1}
Rafael Espindolaef9f5502012-03-24 00:14:51 +00009
10define i8 @f2(i8* %x) {
11entry:
12 %y = load i8* %x, align 1, !range !1
13 ret i8 %y
14}
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +000015!1 = !{i8 255, i8 1}
Rafael Espindolaef9f5502012-03-24 00:14:51 +000016
17define i8 @f3(i8* %x) {
18entry:
19 %y = load i8* %x, align 1, !range !2
20 ret i8 %y
21}
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +000022!2 = !{i8 1, i8 3, i8 5, i8 42}
Rafael Espindola97d77872012-05-31 13:45:46 +000023
24define i8 @f4(i8* %x) {
25entry:
26 %y = load i8* %x, align 1, !range !3
27 ret i8 %y
28}
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +000029!3 = !{i8 -1, i8 0, i8 1, i8 2}
Rafael Espindola97d77872012-05-31 13:45:46 +000030
31define i8 @f5(i8* %x) {
32entry:
33 %y = load i8* %x, align 1, !range !4
34 ret i8 %y
35}
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +000036!4 = !{i8 -1, i8 0, i8 1, i8 -2}
Jingyue Wu37fcb592014-06-19 16:50:16 +000037
38; We can annotate the range of the return value of a CALL.
39define void @call_all(i8* %x) {
40entry:
41 %v1 = call i8 @f1(i8* %x), !range !0
42 %v2 = call i8 @f2(i8* %x), !range !1
43 %v3 = call i8 @f3(i8* %x), !range !2
44 %v4 = call i8 @f4(i8* %x), !range !3
45 %v5 = call i8 @f5(i8* %x), !range !4
46 ret void
47}
48
49; We can annotate the range of the return value of an INVOKE.
50define void @invoke_all(i8* %x) {
51entry:
52 %v1 = invoke i8 @f1(i8* %x) to label %cont unwind label %lpad, !range !0
53 %v2 = invoke i8 @f2(i8* %x) to label %cont unwind label %lpad, !range !1
54 %v3 = invoke i8 @f3(i8* %x) to label %cont unwind label %lpad, !range !2
55 %v4 = invoke i8 @f4(i8* %x) to label %cont unwind label %lpad, !range !3
56 %v5 = invoke i8 @f5(i8* %x) to label %cont unwind label %lpad, !range !4
57
58cont:
59 ret void
60
61lpad:
62 %4 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
63 filter [0 x i8*] zeroinitializer
64 ret void
65}
66declare i32 @__gxx_personality_v0(...)