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.