Add regression test

This commit is contained in:
Oli Scherer 2024-06-14 09:20:05 +00:00
parent e23ae72ac7
commit 97372c8c88
1 changed files with 26 additions and 0 deletions

View File

@ -0,0 +1,26 @@
//! Check that we lose the information that `BAR` points to `FOO`
//! when going through a const generic.
//! This is not an intentional guarantee, it just describes the status quo.
//@ run-pass
// With optimizations, LLVM will deduplicate the constant `X` whose
// value is `&42` to just be a reference to the static. This is correct,
// but obscures the issue we're trying to show.
//@ revisions: opt noopt
//@[noopt] compile-flags: -Copt-level=0
//@[opt] compile-flags: -O
#![feature(const_refs_to_static)]
#![feature(adt_const_params)]
#![allow(incomplete_features)]
static FOO: usize = 42;
const BAR: &usize = &FOO;
fn foo<const X: &'static usize>() {
// Without optimizations, `X` ends up pointing to a copy of `FOO` instead of `FOO` itself.
assert_eq!(cfg!(opt), std::ptr::eq(X, &FOO));
}
fn main() {
foo::<BAR>();
}