Values of WIDE_INT_MAX_ELTS in gcc11 and gcc12 are different
Fri Nov 5 01:34:55 GMT 2021
on 2021/11/5 上午4:37, Qing Zhao via Gcc-patches wrote:
> I noticed that the macro “WIDE_INT_MAX_ELTS” has different values in GCC11 and GCC12 (on the same X86 machine)
> For gcc11:
> wide int max elts =3
> For gcc12:
> wide int max elts =9
> Does anyone know what’s the reason for this difference?
I guess it's due to commit r12-979 (782e57f2c09).
#define WIDE_INT_MAX_ELTS \
((MAX_BITSIZE_MODE_ANY_INT + HOST_BITS_PER_WIDE_INT) / HOST_BITS_PER_WIDE_INT
Before the change, the MAX_BITSIZE_MODE_ANY_INT is explicitly set as 160.
-#define MAX_BITSIZE_MODE_ANY_INT (160)
it's (160+64)/64 = 3
After the change, MAX_BITSIZE_MODE_ANY_INT is counted in function emit_max_int
and becomes 512.
it's (512+64)/64 = 9
As the commit log, the previous 160 bits seems a workaround for some gone
problem, now the commit makes it use the default way to align with the other
> Thanks a lot for any help.
More information about the Gcc-patches