https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91126
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- So the issue is the usual GET_MODE_SIZE != ref->size. native_encode_int encodes two 32bit numbers (but only 3 bytes from them, in big-endian) while VN expects it to encode a 3-byte 24bit number. There's the possibility to disable handling of non-mode precision entities or properly fix it (I think we "simply" need to offset the encoding for big-endian). Note the issue is probably latent for the other places VN uses native_encode_expr on non-mode precision entities. There's already a guard on non-mode precision extracts but not for mode-precision extracts of non-mode precision values which I think has the very same issue.