diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-10-03 21:27:39 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-10-03 21:27:39 +0000 |
commit | f7a13f717a28db58a62759f81a74c4c9865491ab (patch) | |
tree | 900c7186f4476f1eadb33a7b9c035c04d002cd40 | |
parent | fea10e36471d91c13fde543bfc565e2625cac8ee (diff) | |
download | gcc-f7a13f717a28db58a62759f81a74c4c9865491ab.zip gcc-f7a13f717a28db58a62759f81a74c4c9865491ab.tar.gz gcc-f7a13f717a28db58a62759f81a74c4c9865491ab.tar.bz2 |
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
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 226c50a..cb9c9ca 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-10-03 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/26682 + * trans-decl.c (build_function_decl): Set "externally_visible" + attribute on the MAIN program decl. + 2007-10-03 Tobias Schlüter <tobi@gcc.gnu.org> PR fortran/33198 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index f04a4d1..5b6b88b 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); |