On Fri, 2021-12-10 at 15:43 +0800, Chenghua Xu wrote: > + > +INT_MODE (OI, 32); > + > +/* Keep the OI modes from confusing the compiler into thinking > + that these modes could actually be used for computation. They are > + only holders for vectors during data movement. */ > +#define MAX_BITSIZE_MODE_ANY_INT (128)
This can't prevent the compiler from using OImode for calculation. And to make things even worse, in wide-int.h we have: > #define WIDE_INT_MAX_ELTS \ > ((MAX_BITSIZE_MODE_ANY_INT + HOST_BITS_PER_WIDE_INT) / > HOST_BITS_PER_WIDE_INT) /* ... */ > class GTY(()) wide_int_storage > { > private: > HOST_WIDE_INT val[WIDE_INT_MAX_ELTS]; When the compiler uses OImode, this array will eventually be accessed out-of-bound, causing ICE on fp-uint64-convert-double-{1,2}.c. All other ports don't define it (and let genmode to determine the value automatically). I drafted https://github.com/loongson/gcc/pull/64 to remove the MAX_BITSIZE_MODE_ANY_INT definition. Not sure if it's the "proper" fix though. -- Xi Ruoyao <xry...@mengyan1223.wang> School of Aerospace Science and Technology, Xidian University