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
-rw-r--r--tests/ui/codegen/unsupported-static-initializer-in-const-array.rs18
2 files changed, 43 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),
+}
diff --git a/tests/ui/codegen/unsupported-static-initializer-in-const-array.rs b/tests/ui/codegen/unsupported-static-initializer-in-const-array.rs
new file mode 100644
index 00000000000..bc94130ee19
--- /dev/null
+++ b/tests/ui/codegen/unsupported-static-initializer-in-const-array.rs
@@ -0,0 +1,18 @@
+//! LLVM error with unsupported expression in static
+//! initializer for const pointer in array on macOS.
+//!
+//! Regression test for <https://github.com/rust-lang/rust/issues/89225>.
+
+//@ build-pass
+//@ compile-flags: -C opt-level=3
+
+const fn make() -> (i32, i32, *const i32) {
+    const V: i32 = 123;
+    &V as *const i32;
+    (0, 0, &V)
+}
+
+fn main() {
+    let arr = [make(); 32];
+    println!("{}", arr[0].0);
+}