On Fri, Apr 21, 2017 at 08:22:34AM +0200, Jakub Jelinek wrote:
> Hi!
> 
> finish_declspecs when an error has been reported earlier when parsing
> declspecs sets specs->type = integer_type_node; for easier error recovery,
> e.g.:
>     case cts_floatn_nx:
>       gcc_assert (!specs->long_p && !specs->short_p
>                   && !specs->signed_p && !specs->unsigned_p);
>       if (FLOATN_NX_TYPE_NODE (specs->floatn_nx_idx) == NULL_TREE)
>         specs->type = integer_type_node;
> ...
> or
>     case cts_fract:
>       gcc_assert (!specs->complex_p);
>       if (!targetm.fixed_point_supported_p ())
>         specs->type = integer_type_node;
> ...
> But we don't do this for unsupported __intNNN types, happily keep e.g.
> __int128 type in the IL even when it is not supported.  E.g. on the
> following testcase that results in ICE though, because for the vector
> comparison we want to look up corresponding integer type and don't find
> any.
> 
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux,
> ok for trunk and 7.2?
> 
> 2017-04-20  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR c/80468
>       * c-decl.c (finish_declspecs) <case cts_int_n>: If int_n_idx is not
>       enabled, set specs->type to integer_type_node.
> 
>       * gcc.dg/pr80468.c: New test.

Ok.

        Marek

Reply via email to