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