about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2024-04-09 23:17:45 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2024-05-04 19:26:50 +0000
commit9aec5c5bcecad566a76fc7dbb819aa0e58a23671 (patch)
tree5ee04597130a5cc261438817a2b11ced54bf3520
parent1a851da73cdeb02e2c62d301aa6bd98e515a50da (diff)
downloadrust-9aec5c5bcecad566a76fc7dbb819aa0e58a23671.tar.gz
rust-9aec5c5bcecad566a76fc7dbb819aa0e58a23671.zip
Add test for fn pointer duplication.
-rw-r--r--tests/ui/mir/auxiliary/static_fnptr.rs10
-rw-r--r--tests/ui/mir/static_fnptr.rs14
2 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/mir/auxiliary/static_fnptr.rs b/tests/ui/mir/auxiliary/static_fnptr.rs
new file mode 100644
index 00000000000..a48ee6c0121
--- /dev/null
+++ b/tests/ui/mir/auxiliary/static_fnptr.rs
@@ -0,0 +1,10 @@
+//@ compile-flags:-O
+
+fn foo() {}
+
+pub static ADDR: fn() = foo;
+
+#[inline(always)]
+pub fn bar(x: fn()) -> bool {
+    x == ADDR
+}
diff --git a/tests/ui/mir/static_fnptr.rs b/tests/ui/mir/static_fnptr.rs
new file mode 100644
index 00000000000..571dcf4463e
--- /dev/null
+++ b/tests/ui/mir/static_fnptr.rs
@@ -0,0 +1,14 @@
+//@ run-pass
+//@ compile-flags:-Cno-prepopulate-passes -Copt-level=0
+//@ aux-build:static_fnptr.rs
+
+extern crate static_fnptr;
+use static_fnptr::{ADDR, bar};
+
+fn baz() -> bool {
+    bar(ADDR)
+}
+
+fn main() {
+    assert!(baz())
+}