Nested functions are permitted for C but not C++ as extension. They are also permitted for Fortran, which generates DECL_CONTEXT == NAMESPACE_DECL for module variables. That causes the gcc_assert (decl_function_context (decl) == info->context) to fail in tree-nested.c's lookup_field_for_decl. The call happens in convert_local_reference_stmt for: 2524 case GIMPLE_ASSIGN: 2525 if (gimple_clobber_p (stmt)) 2528 if (DECL_P (lhs) 2529 && !use_pointer_in_frame (lhs) 2530 && lookup_field_for_decl (info, lhs, NO_INSERT)) The latter runs into the assert mentioned above. And the '= {CLOBBER}' occurs in gfortran due to the intent(out). As additional ingredient, a nested (internal) procedure involved, obviously as otherwise tree-nested.c wouldn't be involved. The patch fixes the assert and in terms of the assert it makes sense, but I am not sure whether there are assumptions elsewhere which are wrong for NAMESPACE_DECL. OK for mainline? GCC 10? Tobias ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstrasse 201, 80634 München Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Frank Thürauf