aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cgraph.h16
-rw-r--r--gcc/ipa-prop.c1
-rw-r--r--gcc/ipa-prop.h6
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. */