https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102450
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #14) > (In reply to Eric Botcazou from comment #12) > > > > So what's the 16-byte integer mode for this target (MAX_MODE_INT)? > > > > > > MIN_MODE_INT = E_QImode, > > > MAX_MODE_INT = E_TImode, > > > > So the problem is with OImode, not TImode, in the end? > > the folding is capped to MOVE_MAX * MOVE_RATIO which for pa is > 8 * (TARGET_64BIT ? 8 : 4), which would be up to XImode. So the code > really relies on type_for_size returning NULL for unsupported types > at the moment. > > That works fine with all but Ada (and maybe Go) because everybody else > just compares against standard type precisions/signs and never builds a > new type in type_for_size. the only documentation for type_for_size seems to be the comment in langhooks.h: /* Given PRECISION and UNSIGNEDP, return a suitable type-tree for an integer type with at least that precision. */ tree (*type_for_size) (unsigned, int); which doesn't even say the langhook may fail. Let me avoid the issue in gimple-fold.c.