Signedness of fortran size_type_node

Richard Guenther richard.guenther@gmail.com
Tue May 2 13:02:00 GMT 2006


On 5/2/06, Richard Guenther <richard.guenther@gmail.com> wrote:
> On 5/2/06, Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> wrote:
> > Hello,
> >
> > I have just noticed that size_type_node is signed in fortran frontend
> > (it caused an ice for me because unsigned_type_for returns it for
> > pointers, and I inserted an assert that the result of unsigned_type_for
> > is unsigned).
> >
> > According to the comment in tree.h, size_type_node should correspond to
> > "The C type `size_t'", and standard specifies that size_t is unsigned.
> >
> > Is this a bug in fortran frontend, or is size_type_node intentionally
> > set in a different way?
>
> Nothing uses size_type_node in the fortran frontend, so it's surely a bug there.
> Also there is the (the bogus)
>
> 2003-08-19  Diego Novillo  <dnovillo@redhat.com>
>
>         * trans-types.c (gfc_init_types): Initialize
>         signed_size_type_node with size_type_node.

Same problem for Ada:

  /* In Ada, we use a signed type for SIZETYPE.  Use the signed type
     corresponding to the size of Pmode.  In most cases when ptr_mode and
     Pmode differ, C will use the width of ptr_mode as sizetype.  But we get
     far better code using the width of Pmode.  Make this here since we need
     this before we can expand the GNAT types.  */
  size_type_node = gnat_type_for_size (GET_MODE_BITSIZE (Pmode), 0);
  set_sizetype (size_type_node);

though there it seems to be intentional!?

Richard.



More information about the Gcc mailing list