http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48800
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-04-28 12:03:42 UTC --- (In reply to comment #0) > real :: dr(4) s/dr(4)/dr(:)/ to reproduce the ICE. If one places a break point in resolve_fl_var_and_proc, one sees that for sym->name == "dr", the type is: sym->as->type == AS_ASSUMED_SHAPE -- rather than the expected AS_DEFERRED_SHAPE. If it had the latter, a proper error message would have been printed. My impression is that the problem occurs because "dr" is also a dummy argument; the change from AS_DEFERRED_SHAPE to AS_ASSUMED_SHAPE is done at resolve_formal_arglist for dummy arguments. Maybe one should check for attr.flavor != FL_PROCEDURE before doing the change.