aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c8
-rw-r--r--gcc/tree.c2
4 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 214b40e..3fb5883 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2012-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ * tree.c (copy_node_stat): Clear DECL_STRUCT_FUNCTION.
+
2012-08-23 Mingjie Xing <mingjie.xing@gmail.com>
* doc/gty.texi: Fix typo.
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 9fd77d7..88e0bbd 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2012-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ * trans-decl.c (trans_function_start, generate_coarray_init,
+ create_main_function, gfc_generate_constructors): Call
+ allocate_struct_function instead of init_function_start.
+
2012-08-22 Tobias Burnus <burnus@net-b.de>
* trans-expr.c (gfc_copy_class_to_class,
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 6ef00e1..35a859b 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -2265,7 +2265,7 @@ trans_function_start (gfc_symbol * sym)
/* Create RTL for function definition. */
make_decl_rtl (fndecl);
- init_function_start (fndecl);
+ allocate_struct_function (fndecl, false);
/* function.c requires a push at the start of the function. */
pushlevel ();
@@ -4408,7 +4408,7 @@ generate_coarray_init (gfc_namespace * ns __attribute((unused)))
rest_of_decl_compilation (fndecl, 0, 0);
make_decl_rtl (fndecl);
- init_function_start (fndecl);
+ allocate_struct_function (fndecl, false);
pushlevel ();
gfc_init_block (&caf_init_block);
@@ -4982,7 +4982,7 @@ create_main_function (tree fndecl)
rest_of_decl_compilation (ftn_main, 1, 0);
make_decl_rtl (ftn_main);
- init_function_start (ftn_main);
+ allocate_struct_function (ftn_main, false);
pushlevel ();
gfc_init_block (&body);
@@ -5537,7 +5537,7 @@ gfc_generate_constructors (void)
make_decl_rtl (fndecl);
- init_function_start (fndecl);
+ allocate_struct_function (fndecl, false);
pushlevel ();
diff --git a/gcc/tree.c b/gcc/tree.c
index c0d3491..68d5ad0 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -983,6 +983,8 @@ copy_node_stat (tree node MEM_STAT_DECL)
SET_DECL_INIT_PRIORITY (t, DECL_INIT_PRIORITY (node));
DECL_HAS_INIT_PRIORITY_P (t) = 1;
}
+ if (TREE_CODE (node) == FUNCTION_DECL)
+ DECL_STRUCT_FUNCTION (t) = NULL;
}
else if (TREE_CODE_CLASS (code) == tcc_type)
{