summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2006-04-17 12:45:25 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2006-04-17 12:45:25 +0000
commit4460a647d582a10ec8a6d298f3266603c033cfb2 (patch)
tree735700184cbda1adba2eb633a9a335a4aba8db10
parent8b435339f60a4c904ba9b263b6f3a67ab2fade30 (diff)
downloadgcc-4460a647d582a10ec8a6d298f3266603c033cfb2.tar.gz
* cgraph.h (cgraph_edge_p): New.
Update the prototype of cgraph_function_versioning. * cgraphunit.c (cgraph_copy_node_for_versioning, cgraph_function_versioning): Use VEC instead of VARRAY. * ipa-cp.c (ipcp_insert_stage): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113006 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cgraph.h8
-rw-r--r--gcc/cgraphunit.c19
-rw-r--r--gcc/ipa-cp.c10
4 files changed, 27 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 201d21751ce..4f39d985657 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -11,6 +11,12 @@
VEC instead of VARRAY.
(last_alias_set): Remove.
+ * cgraph.h (cgraph_edge_p): New.
+ Update the prototype of cgraph_function_versioning.
+ * cgraphunit.c (cgraph_copy_node_for_versioning,
+ cgraph_function_versioning): Use VEC instead of VARRAY.
+ * ipa-cp.c (ipcp_insert_stage): Likewise.
+
2006-04-16 Roger Sayle <roger@eyesopen.com>
PR target/26961
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 6e60f8c205e..8058d97c079 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -189,6 +189,11 @@ struct cgraph_edge GTY((chain_next ("%h.next_caller"), chain_prev ("%h.prev_call
int loop_nest;
};
+typedef struct cgraph_edge *cgraph_edge_p;
+
+DEF_VEC_P(cgraph_edge_p);
+DEF_VEC_ALLOC_P(cgraph_edge_p,heap);
+
/* The cgraph_varpool data structure.
Each static variable decl has assigned cgraph_varpool_node. */
@@ -307,7 +312,8 @@ void cgraph_build_static_cdtor (char which, tree body, int priority);
void cgraph_reset_static_var_maps (void);
void init_cgraph (void);
struct cgraph_node *cgraph_function_versioning (struct cgraph_node *,
- varray_type, varray_type);
+ VEC(cgraph_edge_p,heap)*,
+ varray_type);
void cgraph_analyze_function (struct cgraph_node *);
struct cgraph_node *save_inline_function_body (struct cgraph_node *);
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 80f26fac52a..030f8681792 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1575,7 +1575,8 @@ update_call_expr (struct cgraph_node *new_version)
static struct cgraph_node *
cgraph_copy_node_for_versioning (struct cgraph_node *old_version,
- tree new_decl, varray_type redirect_callers)
+ tree new_decl,
+ VEC(cgraph_edge_p,heap) *redirect_callers)
{
struct cgraph_node *new_version;
struct cgraph_edge *e, *new_e;
@@ -1614,14 +1615,12 @@ cgraph_copy_node_for_versioning (struct cgraph_node *old_version,
if (!next_callee)
break;
}
- if (redirect_callers)
- for (i = 0; i < VARRAY_ACTIVE_SIZE (redirect_callers); i++)
- {
- e = VARRAY_GENERIC_PTR (redirect_callers, i);
- /* Redirect calls to the old version node
- to point to it's new version. */
- cgraph_redirect_edge_callee (e, new_version);
- }
+ for (i = 0; VEC_iterate (cgraph_edge_p, redirect_callers, i, e); i++)
+ {
+ /* Redirect calls to the old version node to point to its new
+ version. */
+ cgraph_redirect_edge_callee (e, new_version);
+ }
return new_version;
}
@@ -1641,7 +1640,7 @@ cgraph_copy_node_for_versioning (struct cgraph_node *old_version,
struct cgraph_node *
cgraph_function_versioning (struct cgraph_node *old_version_node,
- varray_type redirect_callers,
+ VEC(cgraph_edge_p,heap) *redirect_callers,
varray_type tree_map)
{
tree old_decl = old_version_node->decl;
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 898d95e8212..3837bfdc97a 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -1005,7 +1005,8 @@ ipcp_insert_stage (void)
struct cgraph_node *node, *node1 = NULL;
int i, const_param;
union parameter_info *cvalue;
- varray_type redirect_callers, replace_trees;
+ VEC(cgraph_edge_p,heap) *redirect_callers;
+ varray_type replace_trees;
struct cgraph_edge *cs;
int node_callers, count;
tree parm_tree;
@@ -1045,15 +1046,14 @@ ipcp_insert_stage (void)
node_callers = 0;
for (cs = node->callers; cs != NULL; cs = cs->next_caller)
node_callers++;
- VARRAY_GENERIC_PTR_INIT (redirect_callers, node_callers,
- "redirect_callers");
+ redirect_callers = VEC_alloc (cgraph_edge_p, heap, node_callers);
for (cs = node->callers; cs != NULL; cs = cs->next_caller)
- VARRAY_PUSH_GENERIC_PTR (redirect_callers, cs);
+ VEC_quick_push (cgraph_edge_p, redirect_callers, cs);
/* Redirecting all the callers of the node to the
new versioned node. */
node1 =
cgraph_function_versioning (node, redirect_callers, replace_trees);
- VARRAY_CLEAR (redirect_callers);
+ VEC_free (cgraph_edge_p, heap, redirect_callers);
VARRAY_CLEAR (replace_trees);
if (node1 == NULL)
continue;