diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2009-02-10 22:52:51 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2009-02-10 22:52:51 +0000 |
commit | 794511d20a377c604fa6b0752ad9ba0e035ccfb0 (patch) | |
tree | c6469e15d39deb72fd8e5bd7eaf74835dda07e18 /gcc/ada/gcc-interface/trans.c | |
parent | 493e377c04278267043c9320532792e1ea40ae14 (diff) | |
download | gcc-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.c | 10 |
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&", |