aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/utils.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2010-07-22 19:12:46 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-07-22 19:12:46 +0000
commitcfa0bd19c5187edf728c1ca985b1c8ee7a477c73 (patch)
tree7f1fd3b2d30f16cac3db37da0ccba262810b28f0 /gcc/ada/gcc-interface/utils.c
parent426d63337543926a4b9343919c2ceb191d018433 (diff)
downloadgcc-cfa0bd19c5187edf728c1ca985b1c8ee7a477c73.zip
gcc-cfa0bd19c5187edf728c1ca985b1c8ee7a477c73.tar.gz
gcc-cfa0bd19c5187edf728c1ca985b1c8ee7a477c73.tar.bz2
utils.c (gnat_types_compatible_p): Don't require strict equality for the component type of array types.
* gcc-interface/utils.c (gnat_types_compatible_p): Don't require strict equality for the component type of array types. From-SVN: r162424
Diffstat (limited to 'gcc/ada/gcc-interface/utils.c')
-rw-r--r--gcc/ada/gcc-interface/utils.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index de0d25c..eb65b7d 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -2080,17 +2080,17 @@ gnat_types_compatible_p (tree t1, tree t2)
&& TYPE_PRECISION (TREE_TYPE (t1)) == TYPE_PRECISION (TREE_TYPE (t2)))
return 1;
- /* Array types are also compatible if they are constrained and have
- the same component type and the same domain. */
+ /* Array types are also compatible if they are constrained and have the same
+ domain and compatible component types. */
if (code == ARRAY_TYPE
- && TREE_TYPE (t1) == TREE_TYPE (t2)
&& (TYPE_DOMAIN (t1) == TYPE_DOMAIN (t2)
|| (TYPE_DOMAIN (t1)
&& TYPE_DOMAIN (t2)
&& tree_int_cst_equal (TYPE_MIN_VALUE (TYPE_DOMAIN (t1)),
TYPE_MIN_VALUE (TYPE_DOMAIN (t2)))
&& tree_int_cst_equal (TYPE_MAX_VALUE (TYPE_DOMAIN (t1)),
- TYPE_MAX_VALUE (TYPE_DOMAIN (t2))))))
+ TYPE_MAX_VALUE (TYPE_DOMAIN (t2)))))
+ && gnat_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2)))
return 1;
/* Padding record types are also compatible if they pad the same