Auto merge of #121282 - saethlin:gep-null-means-no-provenance, r= · rust-lang/rust@d073071 (original) (raw)

Original file line number Diff line number Diff line change
@@ -305,11 +305,11 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
305 305 imm = match (from_scalar.primitive(), to_scalar.primitive()) {
306 306 (Int(..) | F32 F64, Int(..) F32 F64) => bx.bitcast(imm, to_backend_ty),
307 307 (Pointer(..), Pointer(..)) => bx.pointercast(imm, to_backend_ty),
308 -(Int(..), Pointer(..)) => bx.inttoptr(imm, to_backend_ty),
308 +(Int(..), Pointer(..)) => bx.gep(bx.type_i8(), bx.const_null(bx.type_ptr()), &[imm]),
309 309 (Pointer(..), Int(..)) => bx.ptrtoint(imm, to_backend_ty),
310 310 (F32 | F64, Pointer(..)) => {
311 311 let int_imm = bx.bitcast(imm, bx.cx().type_isize());
312 - bx.inttoptr(int_imm, to_backend_ty)
312 + bx.gep(bx.type_i8(), bx.const_null(bx.type_ptr()), &[int_imm])
313 313 }
314 314 (Pointer(..), F32 | F64) => {
315 315 let int_imm = bx.ptrtoint(imm, bx.cx().type_isize());