Unfortunately I'm not able to come up with a minimal working example for this, but running `cargo check -p icu_datetime --examples` on https://github.com/unicode-org/icu4x (commit https://github.com/unicode-org/icu4x/commit/021a92e43a07f4178d97fd48ba509fb72164fa14 should be fine) ends up throwing a ton of errors that look like this: ``` Checking icu_testdata v0.6.0 (/home/manishearth/dev/icu4x/provider/testdata) error[E0080]: could not evaluate static initializer --> /home/manishearth/dev/icu4x/utils/zerovec/src/zerovec/mod.rs:260:14 | 260 | let (data, mut metadata): (usize, usize) = core::mem::transmute(bytes); | ^^^^ | | | unable to turn pointer into raw bytes | inside `ZeroVec::<(EraStartDate, tinystr::ascii::TinyAsciiStr<16>)>::from_bytes_unchecked` at /home/manishearth/dev/icu4x/utils/zerovec/src/zerovec/mod.rs:260:14 | ::: /home/manishearth/dev/icu4x/provider/testdata/data/baked/calendar/japanese_v1_u_ca.rs:11:9 | 11 | / ::zerovec::ZeroVec::from_bytes_unchecked(&[ 12 | | 76u8, 7u8, 0u8, 0u8, 9u8, 8u8, 109u8, 101u8, 105u8, 106u8, 105u8, 0u8, 0u8, 0u8, 0u8, 13 | | 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 120u8, 7u8, 0u8, 0u8, 7u8, 30u8, 116u8, 97u8, 105u8, 14 | | 115u8, 104u8, 111u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 134u8, 7u8, 0u8, ... | 19 | | 0u8, 0u8, 20 | | ]) | |__________- inside `japanese_v1_u_ca::UND_U_CA_JAPANESE` at /home/manishearth/dev/icu4x/provider/testdata/data/baked/calendar/japanese_v1_u_ca.rs:11:9 ``` ([full errors](https://gist.github.com/Manishearth/2b456dafe64bf5c860f5571f239556fe); they're long since the "baked" stuff is a bunch of internationalization data that has been "serialized" to Rust code using https://docs.rs/databake) We have a lot of consteval using unsafe code, which is what's tripping up here. The code that's breaking is code that's currently manually constructing a DST of `&[T::ULE]` from `&[u8]`, and in a `const` environment that requires some pointer manipulation: ```rust pub const unsafe fn from_bytes_unchecked(bytes: &'a [u8]) -> Self { // &[u8] and &[T::ULE] are the same slice with different length metadata. let (data, mut metadata): (usize, usize) = core::mem::transmute(bytes); metadata /= core::mem::size_of::<T::ULE>(); Self::Borrowed(core::mem::transmute((data, metadata))) } ``` Bisecting the regression points to https://github.com/rust-lang/rust/pull/97684 (cc @oli-obk, @RalfJung), which seems to be about integer provenance. The code here isn't ideal; there are slightly better ways to do this but nothing is `const`, so this is what we've got. Either way, this is a regression. ## Bisection: searched nightlies: from nightly-2022-06-01 to nightly-2022-06-30 regressed nightly: nightly-2022-06-07 searched commit range: https://github.com/rust-lang/rust/compare/fee3a459dd6aba8e34a5b99f0fbcb4218a1e2401...50b00252aeb77b10db04d65dc9e12ce758def4b5 regressed commit: https://github.com/rust-lang/rust/commit/9d20fd109809f20c049d6895a5be27a1fbd39daa <details> <summary>bisected with <a href='https://github.com/rust-lang/cargo-bisect-rustc'>cargo-bisect-rustc</a> v0.6.3</summary> Host triple: x86_64-unknown-linux-gnu Reproduce with: ```bash cargo bisect-rustc --start=2022-06-01 --end=2022-06-30 --script=./test.sh ```