utils.c (gnat_types_compatible_p): Revert latest change and recurse only for multidimensional array types instead.
* gcc-interface/utils.c (gnat_types_compatible_p): Revert latest change and recurse only for multidimensional array types instead. From-SVN: r162485
This commit is contained in:
parent
9183bdcf81
commit
96bba5e69b
|
@ -1,3 +1,8 @@
|
|||
2010-07-23 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/utils.c (gnat_types_compatible_p): Revert latest change
|
||||
and recurse only for multidimensional array types instead.
|
||||
|
||||
2010-07-22 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR ada/44892
|
||||
|
|
|
@ -2081,7 +2081,7 @@ gnat_types_compatible_p (tree t1, tree t2)
|
|||
return 1;
|
||||
|
||||
/* Array types are also compatible if they are constrained and have the same
|
||||
domain and compatible component types. */
|
||||
domain(s) and the same component type. */
|
||||
if (code == ARRAY_TYPE
|
||||
&& (TYPE_DOMAIN (t1) == TYPE_DOMAIN (t2)
|
||||
|| (TYPE_DOMAIN (t1)
|
||||
|
@ -2090,7 +2090,9 @@ gnat_types_compatible_p (tree t1, tree t2)
|
|||
TYPE_MIN_VALUE (TYPE_DOMAIN (t2)))
|
||||
&& tree_int_cst_equal (TYPE_MAX_VALUE (TYPE_DOMAIN (t1)),
|
||||
TYPE_MAX_VALUE (TYPE_DOMAIN (t2)))))
|
||||
&& gnat_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2)))
|
||||
&& (TREE_TYPE (t1) == TREE_TYPE (t2)
|
||||
|| (TREE_CODE (TREE_TYPE (t1)) == ARRAY_TYPE
|
||||
&& gnat_types_compatible_p (TREE_TYPE (t1), TREE_TYPE (t2)))))
|
||||
return 1;
|
||||
|
||||
/* Padding record types are also compatible if they pad the same
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-07-23 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/aggr16.ad[sb]: New test.
|
||||
* gnat.dg/aggr16_pkg.ads: New helper.
|
||||
|
||||
2010-07-23 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR lto/43071
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
-- { dg-do compile }
|
||||
|
||||
with Aggr16_Pkg; use Aggr16_Pkg;
|
||||
|
||||
package body Aggr16 is
|
||||
|
||||
type Arr is array (1 .. 4) of Time;
|
||||
|
||||
type Change_Type is (One, Two, Three);
|
||||
|
||||
type Change (D : Change_Type) is record
|
||||
case D is
|
||||
when Three =>
|
||||
A : Arr;
|
||||
when Others =>
|
||||
B : Boolean;
|
||||
end case;
|
||||
end record;
|
||||
|
||||
procedure Proc is
|
||||
C : Change (Three);
|
||||
begin
|
||||
C.A := (others => Null_Time);
|
||||
end;
|
||||
|
||||
end Aggr16;
|
|
@ -0,0 +1,5 @@
|
|||
package Aggr16 is
|
||||
|
||||
procedure Proc;
|
||||
|
||||
end Aggr16;
|
|
@ -0,0 +1,27 @@
|
|||
package Aggr16_Pkg is
|
||||
|
||||
type Time_Type is (A, B);
|
||||
|
||||
type Time (D : Time_Type := A) is private;
|
||||
|
||||
Null_Time : constant Time;
|
||||
|
||||
private
|
||||
|
||||
type Hour is record
|
||||
I1 : Integer;
|
||||
I2 : Integer;
|
||||
end record;
|
||||
|
||||
type Time (D : Time_Type := A) is record
|
||||
case D is
|
||||
when A =>
|
||||
A_Time : Integer;
|
||||
when B =>
|
||||
B_Time : Hour;
|
||||
end case;
|
||||
end record;
|
||||
|
||||
Null_Time : constant Time := (A, 0);
|
||||
|
||||
end Aggr16_Pkg;
|
Loading…
Reference in New Issue