Jerry DeLisle wrote: > Tobias Burnus wrote: >> @@ -3874,6 +3877,8 @@ create_main_function (tree fndecl) >> tmp = build_function_type_list (integer_type_node, integer_type_node, >> build_pointer_type (pchar_type_node), >> NULL_TREE); >> + main_identifier_node = get_identifier ("main"); >> + ftn_main = build_decl (FUNCTION_DECL, main_identifier_node, tmp); >> ftn_main = build_decl (FUNCTION_DECL, get_identifier ("main"), tmp); >> DECL_EXTERNAL (ftn_main) = 0; >> TREE_PUBLIC (ftn_main) = 1; >> >> > Tobias and Dave, > > I tested the above on x86-64 Linux. OK to commit.
I just took a second look at this. We surely didn't mean to build two decls and throw one away, did we? I think the second assignment to ftn_main was supposed to have been deleted when the middle argument was changed. It looks harmless but superfluous to me. I'll just double-check that removing it doesn't break anything. Ok if so? gcc/fortran/ChangeLog * trans-decl.c (create_main_function): Don't build main decl twice. cheers, DaveK
Index: gcc/fortran/trans-decl.c =================================================================== --- gcc/fortran/trans-decl.c (revision 148276) +++ gcc/fortran/trans-decl.c (working copy) @@ -3876,7 +3876,6 @@ NULL_TREE); main_identifier_node = get_identifier ("main"); ftn_main = build_decl (FUNCTION_DECL, main_identifier_node, tmp); - ftn_main = build_decl (FUNCTION_DECL, get_identifier ("main"), tmp); DECL_EXTERNAL (ftn_main) = 0; TREE_PUBLIC (ftn_main) = 1; TREE_STATIC (ftn_main) = 1;