From: Eric Botcazou Date: Thu, 14 Dec 2023 12:05:52 +0000 (+0100) Subject: ada: Fix oversight in previous change X-Git-Tag: basepoints/gcc-16~8819 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0715ed49b40311e9b2715f63308a970195dd2417;p=thirdparty%2Fgcc.git ada: Fix oversight in previous change In rare cases, types using structural equality may reach relate_alias_sets. gcc/ada/ * gcc-interface/utils.cc (relate_alias_sets): Restore previous code when the type uses structural equality. --- diff --git a/gcc/ada/gcc-interface/utils.cc b/gcc/ada/gcc-interface/utils.cc index b628481335d..ae520542ace 100644 --- a/gcc/ada/gcc-interface/utils.cc +++ b/gcc/ada/gcc-interface/utils.cc @@ -1867,8 +1867,11 @@ relate_alias_sets (tree new_type, tree old_type, enum alias_set_op op) && TYPE_NONALIASED_COMPONENT (new_type) != TYPE_NONALIASED_COMPONENT (old_type))); - /* The alias set always lives on the TYPE_CANONICAL. */ - TYPE_ALIAS_SET (TYPE_CANONICAL (new_type)) = get_alias_set (old_type); + /* The alias set is a property of the TYPE_CANONICAL if it exists. */ + if (TYPE_STRUCTURAL_EQUALITY_P (new_type)) + TYPE_ALIAS_SET (new_type) = get_alias_set (old_type); + else + TYPE_ALIAS_SET (TYPE_CANONICAL (new_type)) = get_alias_set (old_type); break; case ALIAS_SET_SUBSET: