diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 1ef253c4494b77bf5f04ba3b23d1fbf9b05e9331..29618da8ecdd6d20d7d9f2ebf4b378a97dc14d45 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2010-07-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interfaces/utils.c (update_pointer_to): In the unconstrained
+	array case, merge the alias set of the old pointer type.
+
 2010-07-23  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* gcc-interface/utils.c (gnat_types_compatible_p): Revert latest change
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 7752edb4b6896f496233851f3d0ebf6b64f7ea36..eed426a3cd84d46acf2fba3f633a2006fd86a46c 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -3510,6 +3510,7 @@ update_pointer_to (tree old_type, tree new_type)
       DECL_FIELD_CONTEXT (bounds_field) = new_ptr;
       for (t = new_ptr; t; last = t, t = TYPE_NEXT_VARIANT (t))
 	TYPE_FIELDS (t) = TYPE_FIELDS (ptr);
+      TYPE_ALIAS_SET (new_ptr) = TYPE_ALIAS_SET (ptr);
 
       /* Chain PTR and its variants at the end.  */
       TYPE_NEXT_VARIANT (last) = TYPE_MAIN_VARIANT (ptr);