about summary refs log tree commit diff
path: root/tests/ui/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/codegen')
-rw-r--r--tests/ui/codegen/llvm-miscompile-metadata-invalidation-36023.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/ui/codegen/llvm-miscompile-metadata-invalidation-36023.rs b/tests/ui/codegen/llvm-miscompile-metadata-invalidation-36023.rs
new file mode 100644
index 00000000000..efa31a51881
--- /dev/null
+++ b/tests/ui/codegen/llvm-miscompile-metadata-invalidation-36023.rs
@@ -0,0 +1,25 @@
+// https://github.com/rust-lang/rust/issues/36023
+//@ run-pass
+#![allow(unused_variables)]
+use std::ops::Deref;
+
+fn main() {
+    if env_var("FOOBAR").as_ref().map(Deref::deref).ok() == Some("yes") {
+        panic!()
+    }
+
+    let env_home: Result<String, ()> = Ok("foo-bar-baz".to_string());
+    let env_home = env_home.as_ref().map(Deref::deref).ok();
+
+    if env_home == Some("") { panic!() }
+}
+
+#[inline(never)]
+fn env_var(s: &str) -> Result<String, VarError> {
+    Err(VarError::NotPresent)
+}
+
+pub enum VarError {
+    NotPresent,
+    NotUnicode(String),
+}