https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97534
--- Comment #5 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- No, I don't think it's related to that, in fact, I think this is just a latent bug that's been in the code for a long time. At one point we have a 32-bit signed integer containing INT_MIN, which is internally represented as a 64-bit constant 0xffffffff80000000; we try to negate that (so that we can use addition) and end up with 0x0000000080000000, but that's not a canonical value for internal use on an SImode value (they need to be sign-extended) and eventually this causes the compiler to trip over its own feet. I'm testing a patch.