diff options
| author | razya <razya@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-10 10:21:50 +0000 |
|---|---|---|
| committer | razya <razya@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-10 10:21:50 +0000 |
| commit | a3adcd4a57866aa3e638172f1f8a4e9bc272bc9f (patch) | |
| tree | 033712e9795d7747396d5e1f15d66beefe6a1139 | |
| parent | 35b8d56bebe0b30500d07e5df98bc5b6e2fa7e81 (diff) | |
| download | ppe42-gcc-a3adcd4a57866aa3e638172f1f8a4e9bc272bc9f.tar.gz ppe42-gcc-a3adcd4a57866aa3e638172f1f8a4e9bc272bc9f.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120638 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/function.c | 10 | ||||
| -rw-r--r-- | gcc/function.h | 1 | ||||
| -rw-r--r-- | gcc/tree-inline.c | 7 |
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); |

