On Thu, 9 Jun 2011, Richard Guenther wrote: > On Thu, 9 Jun 2011, Eric Botcazou wrote: > > > > Now that there is a single place left to call set_sizetype we can > > > remove it and initialize sizetypes properly from the start > > > (in initialize_sizetypes). > > > > Can you give a meaningful TYPE_NAME to sizetype? Ada dump files now read: > > > > _GLOBAL.SZ0_discr31 (integer p0, integer p1) > > { > > return p1 <= p0 ? ((bitsizetype) ((<unnamed-unsigned:32>) p0 - > > (<unnamed-unsigned:32>) p1) + 1) * 8 : 0; > > } > > > > and this isn't very pretty. > > It's on my todo - I need to fixup FEs to not expect a TYPE_DECL > everywhere.
Like this, testing with the C family fixup. Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. Richard. 2011-06-09 Richard Guenther <rguent...@suse.de> * stor-layout.c (initialize_sizetypes): Give names to all sizetype kinds. Index: gcc/stor-layout.c =================================================================== --- gcc/stor-layout.c (revision 174841) +++ gcc/stor-layout.c (working copy) @@ -2215,8 +2215,7 @@ initialize_sizetypes (void) /* Create stubs for sizetype and bitsizetype so we can create constants. */ sizetype = make_node (INTEGER_TYPE); - /* ??? We can't set a name for sizetype because it appears in C diagnostics - and pp_c_type_specifier doesn't deal with IDENTIFIER_NODE TYPE_NAMEs. */ + TYPE_NAME (sizetype) = get_identifier ("sizetype"); TYPE_PRECISION (sizetype) = precision; TYPE_UNSIGNED (sizetype) = 1; TYPE_IS_SIZETYPE (sizetype) = 1; @@ -2250,8 +2249,10 @@ initialize_sizetypes (void) /* Create the signed variants of *sizetype. */ ssizetype = make_signed_type (TYPE_PRECISION (sizetype)); + TYPE_NAME (ssizetype) = get_identifier ("ssizetype"); TYPE_IS_SIZETYPE (ssizetype) = 1; sbitsizetype = make_signed_type (TYPE_PRECISION (bitsizetype)); + TYPE_NAME (sbitsizetype) = get_identifier ("sbitsizetype"); TYPE_IS_SIZETYPE (sbitsizetype) = 1; }