about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-12-11 12:18:51 +0000
committervarkor <github@varkor.com>2018-12-11 12:18:51 +0000
commit19ea2d1c8b7c36f8b9006ce46f2b719cc122cd52 (patch)
tree9f08067eef2b844df109d84fffd670914cff1add
parent3dd5034967ab61bfe4dd906fe794ced1279b318a (diff)
downloadrust-19ea2d1c8b7c36f8b9006ce46f2b719cc122cd52.tar.gz
rust-19ea2d1c8b7c36f8b9006ce46f2b719cc122cd52.zip
Add a mir-opt test
-rw-r--r--src/test/mir-opt/uninhabited-enum.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/test/mir-opt/uninhabited-enum.rs b/src/test/mir-opt/uninhabited-enum.rs
new file mode 100644
index 00000000000..904a9c43c1b
--- /dev/null
+++ b/src/test/mir-opt/uninhabited-enum.rs
@@ -0,0 +1,37 @@
+#![feature(never_type)]
+
+pub enum Void {}
+
+#[no_mangle]
+pub fn process_never(input: *const !) {
+   let _input = unsafe { &*input };
+}
+
+#[no_mangle]
+pub fn process_void(input: *const Void) {
+   let _input = unsafe { &*input };
+   // In the future, this should end with `unreachable`, but we currently only do
+   // unreachability analysis for `!`.
+}
+
+fn main() {}
+
+// END RUST SOURCE
+//
+// START rustc.process_never.SimplifyLocals.after.mir
+// bb0: {
+//     StorageLive(_2);
+//     _2 = &(*_1);
+//     StorageDead(_2);
+//     unreachable;
+// }
+// END rustc.process_never.SimplifyLocals.after.mir
+//
+// START rustc.process_void.SimplifyLocals.after.mir
+// bb0: {
+//     StorageLive(_2);
+//     _2 = &(*_1);
+//     StorageDead(_2);
+//     return;
+// }
+// END rustc.process_void.SimplifyLocals.after.mir