]> git.lizzy.rs Git - rust.git/blobdiff - src/intrinsics/mod.rs
Rustup to rustc 1.44.0-nightly (7ceebd98c 2020-03-17)
[rust.git] / src / intrinsics / mod.rs
index 5043c5ec0d86eb645857975d9689899069f88026..de96c4e6edec81a83b6114f996c082d706ba54f8 100644 (file)
@@ -425,7 +425,7 @@ pub fn codegen_intrinsic_call<'tcx>(
     intrinsic_match! {
         fx, intrinsic, substs, args,
         _ => {
-            unimpl!("unsupported intrinsic {}", intrinsic)
+            unimpl_fatal!(fx.tcx, span, "unsupported intrinsic {}", intrinsic);
         };
 
         assume, (c _a) {};
@@ -611,78 +611,6 @@ pub fn codegen_intrinsic_call<'tcx>(
             let dst_layout = fx.layout_of(dst_ty);
             ret.write_cvalue(fx, CValue::by_ref(addr, dst_layout))
         };
-        init, () {
-            let layout = ret.layout();
-            if layout.abi == Abi::Uninhabited {
-                crate::trap::trap_panic(fx, "[panic] Called intrinsic::init for uninhabited type.");
-                return;
-            }
-
-            match *ret.inner() {
-                CPlaceInner::NoPlace => {}
-                CPlaceInner::Var(var) => {
-                    let clif_ty = fx.clif_type(layout.ty).unwrap();
-                    let val = match clif_ty {
-                        types::I8 | types::I16 | types::I32 | types::I64 => fx.bcx.ins().iconst(clif_ty, 0),
-                        types::I128 => {
-                            let zero = fx.bcx.ins().iconst(types::I64, 0);
-                            fx.bcx.ins().iconcat(zero, zero)
-                        }
-                        types::F32 => {
-                            let zero = fx.bcx.ins().iconst(types::I32, 0);
-                            fx.bcx.ins().bitcast(types::F32, zero)
-                        }
-                        types::F64 => {
-                            let zero = fx.bcx.ins().iconst(types::I64, 0);
-                            fx.bcx.ins().bitcast(types::F64, zero)
-                        }
-                        _ => panic!("clif_type returned {}", clif_ty),
-                    };
-                    fx.bcx.set_val_label(val, cranelift_codegen::ir::ValueLabel::from_u32(var.as_u32()));
-                    fx.bcx.def_var(mir_var(var), val);
-                }
-                _ => {
-                    let addr = ret.to_ptr(fx).get_addr(fx);
-                    let layout = ret.layout();
-                    fx.bcx.emit_small_memset(fx.module.target_config(), addr, 0, layout.size.bytes(), 1);
-                }
-            }
-        };
-        uninit, () {
-            let layout = ret.layout();
-            if layout.abi == Abi::Uninhabited {
-                crate::trap::trap_panic(fx, "[panic] Called intrinsic::uninit for uninhabited type.");
-                return;
-            }
-            match *ret.inner() {
-                CPlaceInner::NoPlace => {},
-                CPlaceInner::Var(var) => {
-                    let clif_ty = fx.clif_type(layout.ty).unwrap();
-                    let val = match clif_ty {
-                        types::I8 | types::I16 | types::I32 | types::I64 => fx.bcx.ins().iconst(clif_ty, 42),
-                        types::I128 => {
-                            let zero = fx.bcx.ins().iconst(types::I64, 0);
-                            let fourty_two = fx.bcx.ins().iconst(types::I64, 42);
-                            fx.bcx.ins().iconcat(fourty_two, zero)
-                        }
-                        types::F32 => {
-                            let zero = fx.bcx.ins().iconst(types::I32, 0xdeadbeef);
-                            fx.bcx.ins().bitcast(types::F32, zero)
-                        }
-                        types::F64 => {
-                            let zero = fx.bcx.ins().iconst(types::I64, 0xcafebabedeadbeefu64 as i64);
-                            fx.bcx.ins().bitcast(types::F64, zero)
-                        }
-                        _ => panic!("clif_type returned {}", clif_ty),
-                    };
-                    fx.bcx.set_val_label(val, cranelift_codegen::ir::ValueLabel::from_u32(var.as_u32()));
-                    fx.bcx.def_var(mir_var(var), val);
-                }
-                CPlaceInner::Addr(_, _) => {
-                    // Don't write to `ret`, as the destination memory is already uninitialized.
-                }
-            }
-        };
         write_bytes, (c dst, v val, v count) {
             let pointee_ty = dst.layout().ty.builtin_deref(true).unwrap().ty;
             let pointee_size = fx.layout_of(pointee_ty).size.bytes();