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.

Reply via email to