http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56814
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-04-02 17:25:18 UTC --- The check is in interface.c's check_result_characteristics: /* Check PROCEDURE POINTER attribute. */ if (r1 != s1 && r1->attr.proc_pointer != r2->attr.proc_pointer) { snprintf (errmsg, err_len, "PROCEDURE POINTER mismatch in " "function result"); There are two things bogus here: a) Passing a proc-pointer to a non-pointer procedure dummy is valid b) There is no procedure(-pointer) function result, just a proc(-ptr) actual/dummy argument.