https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89178
Bug ID: 89178 Summary: equality for composed types failt when a component has a discriminant and redefines equality Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada Assignee: unassigned at gcc dot gnu.org Reporter: nicolas at debian dot org Target Milestone: --- 'gnatmake p && ./p' outputs twice 'Should be TRUE: FALSE'. with Ada.Text_IO; procedure P is type T (D : Integer := 0) is record case D is when others => null; end case; end record; overriding function "=" (A, B : in T) return Boolean is (True); T1 : constant T := (D => 1); T2 : constant T := (D => 2); type R is record F : T; end record; R1 : constant R := (F => T1); R2 : constant R := (F => T2); type A is array (Positive range 1 .. 1) of T; A1 : constant A := (1 => T1); A2 : constant A := (1 => T2); begin Ada.Text_IO.Put_Line ("Should be TRUE: " & Boolean'Image (R1 = R2)); Ada.Text_IO.Put_Line ("Should be TRUE: " & Boolean'Image (A1 = A2)); end P;