From 95511cb3eebec837a5c3efa3c87c1fc70dc0c1ba Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Thu, 23 Jul 2020 12:37:27 +0200 Subject: [PATCH] Add unaligned_volatile_{load,store} intrinsics --- src/intrinsics/mod.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs index d93da0fb0873..ae2fe30989ad 100644 --- a/src/intrinsics/mod.rs +++ b/src/intrinsics/mod.rs @@ -823,17 +823,19 @@ pub(crate) fn codegen_intrinsic_call<'tcx>( } }; - volatile_load, (c ptr) { + volatile_load | unaligned_volatile_load, (c ptr) { // Cranelift treats loads as volatile by default // FIXME ignore during stack2reg optimization + // FIXME correctly handle unaligned_volatile_load let inner_layout = fx.layout_of(ptr.layout().ty.builtin_deref(true).unwrap().ty); let val = CValue::by_ref(Pointer::new(ptr.load_scalar(fx)), inner_layout); ret.write_cvalue(fx, val); }; - volatile_store, (v ptr, c val) { + volatile_store | unaligned_volatile_store, (v ptr, c val) { // Cranelift treats stores as volatile by default // FIXME ignore during stack2reg optimization + // FIXME correctly handle unaligned_volatile_store let dest = CPlace::for_ptr(Pointer::new(ptr), val.layout()); dest.write_cvalue(fx, val); };