about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2020-07-23 12:37:27 +0200
committerbjorn3 <bjorn3@users.noreply.github.com>2020-07-23 12:37:27 +0200
commit95511cb3eebec837a5c3efa3c87c1fc70dc0c1ba (patch)
treee372402b3bcb5a14880514a5ad8a2ae884b8da45
parent3f2589acd949622704cb10a026ab1da4e37c9ba4 (diff)
downloadrust-95511cb3eebec837a5c3efa3c87c1fc70dc0c1ba.tar.gz
rust-95511cb3eebec837a5c3efa3c87c1fc70dc0c1ba.zip
Add unaligned_volatile_{load,store} intrinsics
-rw-r--r--src/intrinsics/mod.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs
index d93da0fb087..ae2fe30989a 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);
         };