------- Comment #32 from jv244 at cam dot ac dot uk 2009-07-24 17:00 ------- (In reply to comment #31) > doesn't seem to happen on a clean trunk ( a few days more recent )
it is definitely caused by the current patch (i.e. reverting it fixes the issue): Index: trans-types.c =================================================================== --- trans-types.c (revision 149846) +++ trans-types.c (working copy) @@ -1602,7 +1602,8 @@ int n; base_type = gfc_get_array_descriptor_base (dimen); - fat_type = build_variant_type_copy (base_type); + fat_type = build_distinct_type_copy (base_type); + TYPE_CANONICAL (fat_type) = base_type; tmp = TYPE_NAME (etype); if (tmp && TREE_CODE (tmp) == TYPE_DECL) Index: trans-decl.c =================================================================== --- trans-decl.c (revision 149846) +++ trans-decl.c (working copy) @@ -2023,7 +2023,7 @@ current_function_decl = NULL_TREE; - cgraph_finalize_function (thunk_fndecl, false); + cgraph_finalize_function (thunk_fndecl, true); /* We share the symbols in the formal argument list with other entry points and the master function. Clear them so that they are @@ -4104,7 +4104,7 @@ /* Output the GENERIC tree. */ dump_function (TDI_original, ftn_main); - cgraph_finalize_function (ftn_main, false); + cgraph_finalize_function (ftn_main, true); if (old_context) { @@ -4375,7 +4375,7 @@ added to our parent's nested function list. */ (void) cgraph_node (fndecl); else - cgraph_finalize_function (fndecl, false); + cgraph_finalize_function (fndecl, true); gfc_trans_use_stmts (ns); gfc_traverse_ns (ns, gfc_emit_parameter_debug_info); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40005