]> git.lizzy.rs Git - rust.git/commitdiff
Fix init and uninit intrinsics for u/i128
authorbjorn3 <bjorn3@users.noreply.github.com>
Fri, 20 Dec 2019 11:24:48 +0000 (12:24 +0100)
committerbjorn3 <bjorn3@users.noreply.github.com>
Fri, 20 Dec 2019 11:24:48 +0000 (12:24 +0100)
src/intrinsics.rs

index 80049a2a55f10e5697c2b0926d25eb79e0853894..e05d32ffd7965dd21ad404fe1156fb3efaa01da4 100644 (file)
@@ -615,6 +615,10 @@ pub fn codegen_intrinsic_call<'tcx>(
                     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)
@@ -647,6 +651,11 @@ pub fn codegen_intrinsic_call<'tcx>(
                     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)