http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45889
--- Comment #9 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> 2010-10-06 13:29:47 UTC --- This fixes it. I will commit after a full regression test. Earlier when I added a scan through the OP's for parens I missed this change, so we were looking at the intrinsic operator expression and not the expression within the parens. Index: resolve.c =================================================================== --- resolve.c (revision 165011) +++ resolve.c (working copy) @@ -7934,7 +7934,7 @@ resolve_transfer (gfc_code *code) ts = &sym->ts; /* Go to actual component transferred. */ - for (ref = code->expr1->ref; ref; ref = ref->next) + for (ref = exp->ref; ref; ref = ref->next) if (ref->type == REF_COMPONENT) ts = &ref->u.c.component->ts;