summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRazya Ladelsky <razya@il.ibm.com>2007-01-10 10:21:50 +0000
committerRazya Ladelsky <razya@gcc.gnu.org>2007-01-10 10:21:50 +0000
commit3e87758a6b02a16a11d670c4c00dce09661dd084 (patch)
tree033712e9795d7747396d5e1f15d66beefe6a1139
parent9b718f81fd2014633e4e21eb30e9aca9370a7bdf (diff)
downloadgcc-3e87758a6b02a16a11d670c4c00dce09661dd084.tar.gz
function.c (get_last_funcdef_no): New function.
2007-01-10 Razya Ladelsky <razya@il.ibm.com> * function.c (get_last_funcdef_no): New function. * function.h (get_last_funcdef_no): Declare. * tree-inline.c (initialize_cfun): Add initialization. (tree_function_versioning): Cleanup. From-SVN: r120638
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/function.c10
-rw-r--r--gcc/function.h1
-rw-r--r--gcc/tree-inline.c7
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3d8e36f2ec3..43e4b39164f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2007-01-10 Razya Ladelsky <razya@il.ibm.com>
+
+ * function.c (get_last_funcdef_no): New function.
+ * function.h (get_last_funcdef_no): Declare.
+ * tree-inline.c (initialize_cfun): Add initialization.
+ (tree_function_versioning): Cleanup.
+
2007-01-10 Jan Hubicka <jh@suse.cz>
* tree-inline.c (setup_one_parameter): Do not propagate into abnormal
diff --git a/gcc/function.c b/gcc/function.c
index b657e2490eb..e941c7c7140 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3773,6 +3773,14 @@ debug_find_var_in_block_tree (tree var, tree block)
return NULL_TREE;
}
+
+/* Return value of funcdef and increase it. */
+int
+get_next_funcdef_no(void)
+{
+ return funcdef_no++;
+}
+
/* Allocate a function structure for FNDECL and set its contents
to the defaults. */
@@ -3787,7 +3795,7 @@ allocate_struct_function (tree fndecl)
cfun->stack_alignment_needed = STACK_BOUNDARY;
cfun->preferred_stack_boundary = STACK_BOUNDARY;
- current_function_funcdef_no = funcdef_no++;
+ current_function_funcdef_no = get_next_funcdef_no ();
cfun->function_frequency = FUNCTION_FREQUENCY_NORMAL;
diff --git a/gcc/function.h b/gcc/function.h
index e8039a711a1..e02077f6c63 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -599,4 +599,5 @@ extern bool reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode,
extern void used_types_insert (tree);
+extern int get_next_funcdef_no (void);
#endif /* GCC_FUNCTION_H */
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 1e9a244d155..3775585d5ec 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1080,6 +1080,7 @@ initialize_cfun (tree new_fndecl, tree callee_fndecl, gcov_type count,
/* Register specific tree functions. */
tree_register_cfg_hooks ();
*new_cfun = *DECL_STRUCT_FUNCTION (callee_fndecl);
+ new_cfun->funcdef_no = get_next_funcdef_no ();
VALUE_HISTOGRAMS (new_cfun) = NULL;
new_cfun->unexpanded_var_list = NULL;
new_cfun->cfg = NULL;
@@ -3303,7 +3304,13 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map,
fold_cond_expr_cond ();
if (gimple_in_ssa_p (cfun))
{
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
+ delete_unreachable_blocks ();
update_ssa (TODO_update_ssa);
+ fold_cond_expr_cond ();
+ if (need_ssa_update_p ())
+ update_ssa (TODO_update_ssa);
}
free_dominance_info (CDI_DOMINATORS);
free_dominance_info (CDI_POST_DOMINATORS);