|  | ; RUN: llvm-as < %s -o /dev/null | 
|  |  | 
|  | define i8 @f1(i8* %x) { | 
|  | entry: | 
|  | %y = load i8, i8* %x, align 1, !range !0 | 
|  | ret i8 %y | 
|  | } | 
|  | !0 = !{i8 0, i8 1} | 
|  |  | 
|  | define i8 @f2(i8* %x) { | 
|  | entry: | 
|  | %y = load i8, i8* %x, align 1, !range !1 | 
|  | ret i8 %y | 
|  | } | 
|  | !1 = !{i8 255, i8 1} | 
|  |  | 
|  | define i8 @f3(i8* %x) { | 
|  | entry: | 
|  | %y = load i8, i8* %x, align 1, !range !2 | 
|  | ret i8 %y | 
|  | } | 
|  | !2 = !{i8 1, i8 3, i8 5, i8 42} | 
|  |  | 
|  | define i8 @f4(i8* %x) { | 
|  | entry: | 
|  | %y = load i8, i8* %x, align 1, !range !3 | 
|  | ret i8 %y | 
|  | } | 
|  | !3 = !{i8 -1, i8 0, i8 1, i8 2} | 
|  |  | 
|  | define i8 @f5(i8* %x) { | 
|  | entry: | 
|  | %y = load i8, i8* %x, align 1, !range !4 | 
|  | ret i8 %y | 
|  | } | 
|  | !4 = !{i8 -1, i8 0, i8 1, i8 -2} | 
|  |  | 
|  | ; We can annotate the range of the return value of a CALL. | 
|  | define void @call_all(i8* %x) { | 
|  | entry: | 
|  | %v1 = call i8 @f1(i8* %x), !range !0 | 
|  | %v2 = call i8 @f2(i8* %x), !range !1 | 
|  | %v3 = call i8 @f3(i8* %x), !range !2 | 
|  | %v4 = call i8 @f4(i8* %x), !range !3 | 
|  | %v5 = call i8 @f5(i8* %x), !range !4 | 
|  | ret void | 
|  | } | 
|  |  | 
|  | ; We can annotate the range of the return value of an INVOKE. | 
|  | define void @invoke_all(i8* %x) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { | 
|  | entry: | 
|  | %v1 = invoke i8 @f1(i8* %x) to label %cont unwind label %lpad, !range !0 | 
|  | %v2 = invoke i8 @f2(i8* %x) to label %cont unwind label %lpad, !range !1 | 
|  | %v3 = invoke i8 @f3(i8* %x) to label %cont unwind label %lpad, !range !2 | 
|  | %v4 = invoke i8 @f4(i8* %x) to label %cont unwind label %lpad, !range !3 | 
|  | %v5 = invoke i8 @f5(i8* %x) to label %cont unwind label %lpad, !range !4 | 
|  |  | 
|  | cont: | 
|  | ret void | 
|  |  | 
|  | lpad: | 
|  | %4 = landingpad { i8*, i32 } | 
|  | filter [0 x i8*] zeroinitializer | 
|  | ret void | 
|  | } | 
|  | declare i32 @__gxx_personality_v0(...) |