From ece497cc84834e00ff6b1e43f28d17598efc24a2 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Wed, 8 Aug 2018 10:39:10 +0200 Subject: [PATCH] Some misc changes --- examples/example.rs | 5 +++++ src/abi.rs | 2 +- src/base.rs | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/examples/example.rs b/examples/example.rs index e9896ef6c75..0537db405d3 100644 --- a/examples/example.rs +++ b/examples/example.rs @@ -137,3 +137,8 @@ unsafe fn transmute(c: char) -> u32 { unsafe fn call_uninit() -> u8 { intrinsics::uninit() } + +// TODO: enable when fat pointers are supported +/*unsafe fn deref_str_ptr(s: *const str) -> &'static str { + &*s +}*/ diff --git a/src/abi.rs b/src/abi.rs index 1bf39095ddf..929002f0e80 100644 --- a/src/abi.rs +++ b/src/abi.rs @@ -330,7 +330,7 @@ pub fn codegen_call<'a, 'tcx: 'a>( let nil_ty = fx.tcx.mk_nil(); let usize_layout = fx.layout_of(fx.tcx.types.usize); - let ret = return_place.unwrap(); + let ret = return_place.expect("return place"); match intrinsic { "abort" => { fx.bcx.ins().trap(TrapCode::User(!0 - 1)); diff --git a/src/base.rs b/src/base.rs index c61e5e39c6e..e0c4b80afcc 100644 --- a/src/base.rs +++ b/src/base.rs @@ -354,6 +354,10 @@ fn trans_stmt<'a, 'tcx: 'a>( let res = match un_op { UnOp::Not => fx.bcx.ins().bnot(val), UnOp::Neg => match ty.sty { + TypeVariants::TyInt(_) => { + let zero = fx.bcx.ins().iconst(types::I64, 0); + fx.bcx.ins().isub(zero, val) + }, TypeVariants::TyFloat(_) => fx.bcx.ins().fneg(val), _ => unimplemented!("un op Neg for {:?}", ty), },