On Fri, Sep 19, 2008 at 6:36 PM, Diego Novillo <[EMAIL PROTECTED]> wrote:
> @@ -7674,12 +7713,8 @@ build_common_tree_nodes (bool signed_cha
>   unsigned_char_type_node = make_unsigned_type (CHAR_TYPE_SIZE);
>   TYPE_STRING_FLAG (unsigned_char_type_node) = 1;
>
> -  /* Define `char', which is like either `signed char' or `unsigned char'
> -     but not the same as either.  */
> -  char_type_node
> -    = (signed_char
> -       ? make_signed_type (CHAR_TYPE_SIZE)
> -       : make_unsigned_type (CHAR_TYPE_SIZE));
> +  /* Define `char', which is like either `signed char' or `unsigned char'.  
> */
> +  char_type_node = signed_char ? signed_char_type_node :
> unsigned_char_type_node;
>   TYPE_STRING_FLAG (char_type_node) = 1;

Maybe this is a totally stupid idea in the wrong direction - but would
it help to set the TYPE_CANONICAL the same, e.g.:

Index: tree.c
===================================================================
--- tree.c      (revision 140524)
+++ tree.c      (working copy)
@@ -7364,8 +7364,8 @@
      but not the same as either.  */
   char_type_node
     = (signed_char
-       ? make_signed_type (CHAR_TYPE_SIZE)
-       : make_unsigned_type (CHAR_TYPE_SIZE));
+       ? build_distinct_type_copy (signed_char_type_node)
+       : build_distinct_type_copy (unsigned_char_type_node));
   TYPE_STRING_FLAG (char_type_node) = 1;

   short_integer_type_node = make_signed_type (SHORT_TYPE_SIZE);

Gr.
Steven

Reply via email to