diff --git a/src/intrinsics.cpp b/src/intrinsics.cpp index cd0fb72a4830e9..d4be6aded2619f 100644 --- a/src/intrinsics.cpp +++ b/src/intrinsics.cpp @@ -898,8 +898,7 @@ static Value *emit_intrinsic(intrinsic f, jl_value_t **args, size_t nargs, // but if we start looking at more bits we need to actually do the // rounding first instead of carrying around incorrect low bits. Value *x = auto_unbox(args[2],ctx); - builder.CreateStore(FP(x), builder.CreateBitCast(prepare_global(jlfloattemp_var),FT(x->getType())->getPointerTo()), true); - return builder.CreateFPExt(builder.CreateLoad(builder.CreateBitCast(prepare_global(jlfloattemp_var),FT(x->getType())->getPointerTo()), true), + return builder.CreateFPExt(builder.CreateBitCast(x,x->getType()), FTnbits(try_to_determine_bitstype_nbits(args[1],ctx))); } HANDLE(select_value,3) {