https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106833
Kewen Lin <linkw at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-checking CC| |bergner at gcc dot gnu.org, | |hubicka at gcc dot gnu.org, | |rguenth at gcc dot gnu.org, | |segher at gcc dot gnu.org Target| |powerpc*-linux-gnu --- Comment #1 from Kewen Lin <linkw at gcc dot gnu.org> --- IMHO this is an omission when we were adding supports for opaque type, const __vector_quad and __vector_quad should be taken as canonical_types_compatible. I wonder if we can simply take it just like what it handles for "Non-aggregate types", for example: diff --git a/gcc/tree.cc b/gcc/tree.cc index 2f488e4467c..555e96c59d5 100644 --- a/gcc/tree.cc +++ b/gcc/tree.cc @@ -13510,6 +13510,7 @@ gimple_canonical_types_compatible_p (const_tree t1, const_tree t2, || TREE_CODE (t1) == VECTOR_TYPE || TREE_CODE (t1) == COMPLEX_TYPE || TREE_CODE (t1) == OFFSET_TYPE + || TREE_CODE (t1) == OPAQUE_TYPE || POINTER_TYPE_P (t1)) { /* Can't be the same type if they have different recision. */ Or adding one default hook which does the similar thing, and then if one target needs some target specific checks on its opaque type, one specific hook can be provided.