about summary refs log tree commit diff
path: root/tests/codegen
diff options
context:
space:
mode:
authorOneirical <manchot@videotron.ca>2024-05-17 15:05:36 -0400
committerOneirical <manchot@videotron.ca>2024-05-22 22:43:21 -0400
commitddb81ce68047d6383a789c8da514e443faea8349 (patch)
tree4111f0af14cd90cce02936fdb952a4abb8457e6b /tests/codegen
parentddba1dc97e83f22165b36dd6158477c49bbbd019 (diff)
downloadrust-ddb81ce68047d6383a789c8da514e443faea8349.tar.gz
rust-ddb81ce68047d6383a789c8da514e443faea8349.zip
rewrite and rename issue-46239
Diffstat (limited to 'tests/codegen')
-rw-r--r--tests/codegen/noalias-freeze.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/codegen/noalias-freeze.rs b/tests/codegen/noalias-freeze.rs
new file mode 100644
index 00000000000..8086f3afbbc
--- /dev/null
+++ b/tests/codegen/noalias-freeze.rs
@@ -0,0 +1,21 @@
+//@ compile-flags: -Copt-level=1
+
+// References returned by a Frozen pointer type
+// could be marked as "noalias", which caused miscompilation errors.
+// This test runs the most minimal possible code that can reproduce this bug,
+// and checks that noalias does not appear.
+// See https://github.com/rust-lang/rust/issues/46239
+
+#![crate_type = "lib"]
+
+fn project<T>(x: &(T,)) -> &T { &x.0 }
+
+fn dummy() {}
+
+// CHECK-LABEL: @foo(
+// CHECK-NOT: noalias
+#[no_mangle]
+pub fn foo() {
+    let f = (dummy as fn(),);
+    (*project(&f))();
+}