Until the wide-int merge there was a 32-bit hole on 64-bit hosts between the end of the rtx flags and the start of the first field. It was decided that CONST_WIDE_INT should use this hole to store the number of HWIs.
This patch series moves the "i" and int-typed "0" fields of some other rtxes to this region. It mostly has to be "0" fields though. There are other rtxes like ADDRESS and SUBREG (for the SUBREG_BYTE) that would benefit in principle, but this would break various bits of code that use GET_RTX_FORMAT. Probably the most difficult format user to update is genrecog. UNSPEC and UNSPEC_VOLATILE would also benefit, but the bigger saving there -- and for things like PARALLEL and CONST_VECTOR -- would be to use a trailing array for the rtxes instead of a separate rtvec. Something like a 24/8 split between the unspec number and number of subrtxes should be plenty. Tested on x86_64-linux-gnu. Thanks, Richard