aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2009-06-01 09:00:35 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2009-06-01 09:00:35 +0200
commita7ad6c2d616aff70b3ad1b17bae0d9fd9ba0478a (patch)
treec5836a92fb787e5502d8007088995b217160a103
parent75afccba060cc990398ffa0741aca68232ac6f56 (diff)
downloadgcc-a7ad6c2d616aff70b3ad1b17bae0d9fd9ba0478a.zip
gcc-a7ad6c2d616aff70b3ad1b17bae0d9fd9ba0478a.tar.gz
gcc-a7ad6c2d616aff70b3ad1b17bae0d9fd9ba0478a.tar.bz2
re PR fortran/40309 (gfortran does not support static c/d-tors.)
2009-06-01 Tobias Burnus <burnus@net-b.de> PR fortran/40309 * trans-decl.c (gfc_sym_identifier): Use "MAIN__" for PROGRAM "main". (create_main_function): Set main_identifier_node. From-SVN: r148035
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c94b7d7..533ac20 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-06-01 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/40309
+ * trans-decl.c (gfc_sym_identifier): Use "MAIN__" for PROGRAM "main".
+ (create_main_function): Set main_identifier_node.
+
2009-05-29 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/40019
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index a036aeb..ef6172c 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -289,7 +289,10 @@ gfc_get_label_decl (gfc_st_label * lp)
static tree
gfc_sym_identifier (gfc_symbol * sym)
{
- return (get_identifier (sym->name));
+ if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0)
+ return (get_identifier ("MAIN__"));
+ else
+ return (get_identifier (sym->name));
}
@@ -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;