From 794511d20a377c604fa6b0752ad9ba0e035ccfb0 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Tue, 10 Feb 2009 22:52:51 +0000 Subject: alias.h (record_alias_subset): Declare. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * alias.h (record_alias_subset): Declare. * alias.c (record_alias_subset): Make global. ada/ * gcc-interface/decl.c (enum alias_set_op): New enumeration. (copy_alias_set): Rename into... (relate_alias_sets): ...this.  Add third parameter OP.  Retrieve the underlying array of unconstrained arrays for the new type as well. If the old and new alias sets don't conflict, make one a subset of the other as per the OP parameter. (gnat_to_gnu_entity): Adjust calls to copy_alias_set. : Do not copy the alias set for derived types. For all types, make the alias set of derived types a superset of that of their parent type. (make_aligning_type): Adjust calls to copy_alias_set. (make_packable_type): Likewise. * gcc-interface/trans.c (gnat_to_gnu): Check for alias set conflict instead of strict equality to issue the warning. From-SVN: r144084 --- gcc/ada/gcc-interface/trans.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'gcc/ada/gcc-interface/trans.c') diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 51d20d2..17433e9 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -4940,8 +4940,9 @@ gnat_to_gnu (Node_Id gnat_node) != TYPE_DUMMY_P (gnu_target_desig_type)) || (TYPE_DUMMY_P (gnu_source_desig_type) && gnu_source_desig_type != gnu_target_desig_type) - || (get_alias_set (gnu_source_desig_type) - != get_alias_set (gnu_target_desig_type)))) + || !alias_sets_conflict_p + (get_alias_set (gnu_source_desig_type), + get_alias_set (gnu_target_desig_type)))) { post_error_ne ("?possible aliasing problem for type&", @@ -4973,8 +4974,9 @@ gnat_to_gnu (Node_Id gnat_node) != TYPE_DUMMY_P (gnu_target_array_type)) || (TYPE_DUMMY_P (gnu_source_array_type) && gnu_source_array_type != gnu_target_array_type) - || (get_alias_set (gnu_source_array_type) - != get_alias_set (gnu_target_array_type)))) + || !alias_sets_conflict_p + (get_alias_set (gnu_source_array_type), + get_alias_set (gnu_target_array_type)))) { post_error_ne ("?possible aliasing problem for type&", -- cgit v1.1