http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46678
--- Comment #7 from Tobias Burnus <burnus at gcc dot gnu.org> 2010-11-27 14:10:54 UTC --- The problem seems to be in trans-array.c's gfc_trans_auto_array_allocation where gfortran had before: - gfc_add_expr_to_block (&block, fnbody); - return gfc_finish_block (&block); which added the fnbody to the block; now one adds the block to the try block: + gfc_add_init_cleanup (block, gfc_finish_block (&init), tmp); The question is how to fix this. The TRY block is not really a block but a chained list. Hence, using block->init directly is also not easily possible. Daniel, you wrote that part. Do you have an idea?