From f7a13f717a28db58a62759f81a74c4c9865491ab Mon Sep 17 00:00:00 2001 From: Francois-Xavier Coudert Date: Wed, 3 Oct 2007 21:27:39 +0000 Subject: [PATCH] re PR fortran/26682 (gfortran fails with -fwhole-program optimization) PR fortran/26682 * trans-decl.c (build_function_decl): Set "externally_visible" attribute on the MAIN program decl. From-SVN: r128993 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-decl.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 226c50a20fe..cb9c9ca964f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-10-03 Francois-Xavier Coudert + + PR fortran/26682 + * trans-decl.c (build_function_decl): Set "externally_visible" + attribute on the MAIN program decl. + 2007-10-03 Tobias Schlüter PR fortran/33198 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index f04a4d1b904..5b6b88bde63 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1321,6 +1321,12 @@ build_function_decl (gfc_symbol * sym) TREE_SIDE_EFFECTS (fndecl) = 0; } + /* For -fwhole-program to work well, MAIN__ needs to have the + "externally_visible" attribute. */ + if (attr.is_main_program) + DECL_ATTRIBUTES (fndecl) + = tree_cons (get_identifier("externally_visible"), NULL_TREE, NULL_TREE); + /* Layout the function declaration and put it in the binding level of the current function. */ pushdecl (fndecl);