https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57048
--- Comment #10 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Here's something that appears to work. Looks like a hack, swims like a hack, and quacks like a hack... Index: interface.c =================================================================== --- interface.c (Revision 268104) +++ interface.c (Arbeitskopie) @@ -692,6 +692,15 @@ if (ts1->type == BT_VOID || ts2->type == BT_VOID) return true; + /* Special case for our C interop types. There should be a better + way of doing this... */ + + if (((ts1->type == BT_INTEGER && ts2->type == BT_DERIVED) + || (ts1->type == BT_DERIVED && ts2->type == BT_INTEGER)) + && ts1->u.derived && ts2->u.derived + && ts1->u.derived == ts2->u.derived) + return true; + /* The _data component is not always present, therefore check for its presence before assuming, that its derived->attr is available. When the _data component is not present, then nevertheless the