http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50684
--- Comment #6 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-10-12 21:42:02 UTC --- (In reply to comment #4) > But should it be rejected? move_alloc does not modify the association > status of "dt" - just of "dt%VALUE". Thus, I believe this test case is > valid and, hence, gfortran should not reject it. While I still think that the program is valid, I just realized that that is not what I wrote in comment 1 - there I claimed that it is invalid. I also realized that one shouldn't need to walk the expression (contrary to intent(in) for nonpointer variables). Your simple + && !(e->symtree->n.sym->attr.pointer && e->ref)) should do. Actually, I do not quite understand why it shows an error with the patch: !(attr.ptr && e->ref) should be false as attr.ptr is true and e->ref it not NULL and hence true. Thus the parentheses should be true, the ! makes it false. Thus, how can be there an error message?