https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106878
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 53552 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53552&action=edit gcc13-pr106878-3.patch Or we can revert parts of Andrew's change and allow BIT_NOT_EXPR on pointers and OFFSET_TYPE, because it is just weird if the 3 BIT_*_EXPR are inconsitent with it. Except this ICEs in the ranger, which wants to treat BIT_NOT_EXPR as ~X is simply -1 - X except that MINUS_EXPR isn't supported on pointers.