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.