Another case: with C392014_2; package body C392014_0 is function Create return T'Class is begin return C392014_2.Create ; end Create; end C392014_0; package C392014_0 is type T (D : natural) is abstract tagged null record; function Create return T'Class; end C392014_0; with C392014_0; with C392014_1; package C392014_2 is type T is new C392014_1.T with record C2 : natural; end record; function Create return T'Class; end C392014_2; with C392014_0; package C392014_1 is type T is new C392014_0.T with record C1 : natural; end record; end C392014_1; Again see PR 22368 for the patch which I used to find this.
c392014_2.ads: In function 'C392014_0.Create': c392014_2.ads:9: error: statement types mismatch D.865 = D.866; struct c392014_0__tD.395 * struct c392014_2__tD.827 * -- Summary: Ada produces mis-match (non compatible) types in MODIFY_EXPR Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: ada AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: bosch at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22419