Bill,
can you give this patch a spin please? I've smoke tested it on a ppc64le
x-compiler, but don't have one to run executables. regression testing
on an x86_64-linux system is ok.
The DEPENDENT_TYPE_VALID_P thing is a red herring.
It is the canonical type table's equal function considering most types
with different TYPE_NAMEs to be different. Now, you might think that
only applies to things like RECORD_TYPE, but no, wchar_t is different
from plain int, for example.
However, as you can see there's already a get-out for COMPLEX_TYPE, and
I think the same is needed for VECTOR_TYPE.
Both set_underlying_type and rs6000 set the builtin vector type's
TYPE_NAME, and so one constructed via applying
__attribute__((vector_size(16))) will never match. And it should.
nathan
--
Nathan Sidwell
Index: tree.c
===================================================================
--- tree.c (revision 246647)
+++ tree.c (working copy)
@@ -7005,10 +7005,11 @@ type_cache_hasher::equal (type_hash *a,
if (a->hash != b->hash
|| TREE_CODE (a->type) != TREE_CODE (b->type)
|| TREE_TYPE (a->type) != TREE_TYPE (b->type)
- || !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)))
+ && TREE_CODE (a->type) != VECTOR_TYPE
+ && TYPE_NAME (a->type) != TYPE_NAME (b->type))
+ || !attribute_list_equal (TYPE_ATTRIBUTES (a->type),
+ TYPE_ATTRIBUTES (b->type)))
return 0;
/* Be careful about comparing arrays before and after the element type