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.

Reply via email to