https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106833
--- Comment #5 from Kewen Lin <linkw at gcc dot gnu.org> --- > > I'm quoting tree.def, emphasis mine: > > > > /* This is for types that will use MODE_OPAQUE in the back end. They are > > meant > > to be able to go in a register of some sort but are _EXPLICITLY NOT TO BE > > CONVERTED_ or operated on like INTEGER_TYPE. They will have size and > > alignment information only. */ > > DEFTREECODE (OPAQUE_TYPE, "opaque_type", tcc_type, 0) > > Also the above says "have size and alignment information only" but the > path you patch will look at TYPE_PRECISION and signedness. Why, if that > was necessary, did the TYPE_MODE check not trigger? > After reading the documentation you posted, I think the patching place is wrong. The previous TYPE_MODE check passed, as both TYPE_MODEs are E_XOmode.