http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55978
--- Comment #15 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-02-05 22:46:03 UTC --- (In reply to comment #14) > + if (fsym && fsym->attr.optional && sym && sym->attr.pointer) Shouldn't you use something like gfc_expr_attr(expr).pointer Otherwise, I fear it will fail for var%comp Additionally, one might have to handle - unallocated allocatables - NULL() [= EXPR_NULL] - CLASS(), (pointer|allocatable)? Furthermore, I think one can use: (gfc_option.allow_std & GFC_STD_F2008) != 0 as only since Fortran 2008, NULL pointers and deallocated allocatables count as absent optionals (to nonpointer,nonallocatable actuals).