https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62077

--- Comment #27 from Sven C. Dack <sven.c.dack at virginmedia dot com> ---
(In reply to Richard Biener from comment #24)
> Or "real" fix for the type_hash_canon issue (untested)
> 
> Index: gcc/tree.c
> ===================================================================
> --- gcc/tree.c  (revision 213814)
> +++ gcc/tree.c  (working copy)
> @@ -6593,7 +6593,9 @@ type_hash_eq (const void *va, const void
>        || !attribute_list_equal (TYPE_ATTRIBUTES (a->type),
>                                  TYPE_ATTRIBUTES (b->type))
>        || (TREE_CODE (a->type) != COMPLEX_TYPE
> -          && TYPE_NAME (a->type) != TYPE_NAME (b->type)))
> +          && TYPE_NAME (a->type) != TYPE_NAME (b->type))
> +      || ((TYPE_MAIN_VARIANT (a->type) == TYPE_MAIN_VARIANT (a->type))
> +         != (TYPE_MAIN_VARIANT (b->type) == TYPE_MAIN_VARIANT (b->type))))
>      return 0;
>  
>    /* Be careful about comparing arrays before and after the element type

This looks wrong. It looks like you are doing "... || ((true) != (true))".

Reply via email to