diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cgraph.h | 16 | ||||
-rw-r--r-- | gcc/ipa-prop.c | 1 | ||||
-rw-r--r-- | gcc/ipa-prop.h | 6 |
4 files changed, 19 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f68d758..f4cd281 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-12-01 Martin Jambor <mjambor@suse.cz> + + * cgraph.h (struct cgraph_edge): Reorder fields. Make loop_nest + unsigned short int. + * ipa-prop.h (struct ipa_param_call_note): Likewise. + * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest. + 2009-12-01 Richard Guenther <rguenther@suse.de> * final.c (rest_of_clean_state): If -fcompare-debug is diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 1017176..d79d3e4 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -310,6 +310,8 @@ typedef enum { } cgraph_inline_failed_t; struct GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_caller"))) cgraph_edge { + /* Expected number of executions: calculated in profile.c. */ + gcov_type count; struct cgraph_node *caller; struct cgraph_node *callee; struct cgraph_edge *prev_caller; @@ -317,29 +319,27 @@ struct GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_caller"))) cgrap struct cgraph_edge *prev_callee; struct cgraph_edge *next_callee; gimple call_stmt; - /* The stmt_uid of this call stmt. This is used by LTO to recover - the call_stmt when the function is serialized in. */ - unsigned int lto_stmt_uid; PTR GTY ((skip (""))) aux; /* When equal to CIF_OK, inline this call. Otherwise, points to the explanation why function was not inlined. */ cgraph_inline_failed_t inline_failed; - /* Expected number of executions: calculated in profile.c. */ - gcov_type count; + /* The stmt_uid of call_stmt. This is used by LTO to recover the call_stmt + when the function is serialized in. */ + unsigned int lto_stmt_uid; /* Expected frequency of executions within the function. When set to CGRAPH_FREQ_BASE, the edge is expected to be called once per function call. The range is 0 to CGRAPH_FREQ_MAX. */ int frequency; + /* Unique id of the edge. */ + int uid; /* Depth of loop nest, 1 means no loop nest. */ - unsigned int loop_nest : 30; + unsigned short int loop_nest; /* Whether this edge describes a call that was originally indirect. */ unsigned int indirect_call : 1; /* True if the corresponding CALL stmt cannot be inlined. */ unsigned int call_stmt_cannot_inline_p : 1; /* Can this call throw externally? */ unsigned int can_throw_external : 1; - /* Unique id of the edge. */ - int uid; }; #define CGRAPH_FREQ_BASE 1000 diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 78269d8..9387f0e 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -754,6 +754,7 @@ ipa_note_param_call (struct ipa_node_params *info, int formal_id, note->lto_stmt_uid = gimple_uid (stmt); note->count = bb->count; note->frequency = compute_call_stmt_bb_frequency (current_function_decl, bb); + note->loop_nest = bb->loop_depth; note->next = info->param_calls; info->param_calls = note; diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 4dc87d7..90055e1 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -139,6 +139,8 @@ struct ipcp_lattice are linked in a list. */ struct ipa_param_call_note { + /* Expected number of executions: calculated in profile.c. */ + gcov_type count; /* Linked list's next */ struct ipa_param_call_note *next; /* Statement that contains the call to the parameter above. */ @@ -147,13 +149,11 @@ struct ipa_param_call_note unsigned int lto_stmt_uid; /* Index of the parameter that is called. */ int formal_id; - /* Expected number of executions: calculated in profile.c. */ - gcov_type count; /* Expected frequency of executions within the function. see cgraph_edge in cgraph.h for more on this. */ int frequency; /* Depth of loop nest, 1 means no loop nest. */ - int loop_nest; + unsigned short int loop_nest; /* Set when we have already found the target to be a compile time constant and turned this into an edge or when the note was found unusable for some reason. */ |