@@ -16,6 +16,7 @@ use lib::llvm::{Opcode, IntPredicate, RealPredicate, True, False};
16
16
use lib:: llvm:: { ValueRef , TypeRef , BasicBlockRef , BuilderRef , ModuleRef } ;
17
17
use libc:: { c_uint, c_int, c_ulonglong} ;
18
18
use middle:: trans:: common:: * ;
19
+ use middle:: trans:: machine:: llsize_of_real;
19
20
20
21
use core:: cast:: transmute;
21
22
use core:: cast;
@@ -540,13 +541,11 @@ pub fn LoadRangeAssert(cx: block, PointerVal: ValueRef, lo: c_ulonglong,
540
541
hi: c_ulonglong, signed: lib::llvm::Bool) -> ValueRef {
541
542
let value = Load(cx, PointerVal);
542
543
543
- let ccx = cx.fcx.ccx;
544
- let ty = val_ty(PointerVal);
545
544
unsafe {
546
- assert llvm::LLVMGetTypeKind(ty) != lib::llvm::Array;
545
+ let t = llvm::LLVMGetElementType(llvm::LLVMTypeOf(PointerVal));
546
+ let min = llvm::LLVMConstInt(t, lo, signed);
547
+ let max = llvm::LLVMConstInt(t, hi, signed);
547
548
548
- let min = llvm::LLVMConstInt(ccx.int_type, lo, signed);
549
- let max = llvm::LLVMConstInt(ccx.int_type, hi, signed);
550
549
551
550
do vec::as_imm_buf([min, max]) |ptr, len| {
552
551
llvm::LLVMSetMetadata(value, lib::llvm::MD_range as c_uint,
0 commit comments