aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/trans.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2009-02-10 22:52:51 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-02-10 22:52:51 +0000
commit794511d20a377c604fa6b0752ad9ba0e035ccfb0 (patch)
treec6469e15d39deb72fd8e5bd7eaf74835dda07e18 /gcc/ada/gcc-interface/trans.c
parent493e377c04278267043c9320532792e1ea40ae14 (diff)
downloadgcc-794511d20a377c604fa6b0752ad9ba0e035ccfb0.zip
gcc-794511d20a377c604fa6b0752ad9ba0e035ccfb0.tar.gz
gcc-794511d20a377c604fa6b0752ad9ba0e035ccfb0.tar.bz2
alias.h (record_alias_subset): Declare.
* 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. <E_Record_Type>: 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)<N_Validate_Unchecked_Conversion>: Check for alias set conflict instead of strict equality to issue the warning. From-SVN: r144084
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r--gcc/ada/gcc-interface/trans.c10
1 files changed, 6 insertions, 4 deletions
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&",