diff options
author | hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-01 22:22:57 +0000 |
---|---|---|
committer | hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-01 22:22:57 +0000 |
commit | 9e169c4bf36a38689550c059570c57efbf00a6fb (patch) | |
tree | 95e6800f7ac2a49ff7f799d96f04172320e70ac0 /gcc/cgraph.c | |
parent | 6170dfb6edfb7b19f8ae5209b8f948fe0076a4ad (diff) | |
download | gcc-vect256.tar.gz |
Merged trunk at revision 161680 into branch.vect256
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/vect256@161681 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 0c2441fcf6f..aaa50b607d2 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -442,7 +442,7 @@ cgraph_allocate_node (void) } else { - node = GGC_CNEW (struct cgraph_node); + node = ggc_alloc_cleared_cgraph_node (); node->uid = cgraph_max_uid++; } @@ -970,7 +970,7 @@ cgraph_create_edge_1 (struct cgraph_node *caller, struct cgraph_node *callee, } else { - edge = GGC_NEW (struct cgraph_edge); + edge = ggc_alloc_cgraph_edge (); edge->uid = cgraph_edge_max_uid++; } @@ -1045,7 +1045,7 @@ cgraph_create_indirect_edge (struct cgraph_node *caller, gimple call_stmt, edge->indirect_unknown_callee = 1; initialize_inline_failed (edge); - edge->indirect_info = GGC_CNEW (struct cgraph_indirect_call_info); + edge->indirect_info = ggc_alloc_cleared_cgraph_indirect_call_info (); edge->indirect_info->param_index = -1; edge->indirect_info->ecf_flags = ecf_flags; @@ -1825,6 +1825,8 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node) fprintf (f, " local"); if (node->local.externally_visible) fprintf (f, " externally_visible"); + if (node->local.used_from_object_file) + fprintf (f, " used_from_object_file"); if (node->local.finalized) fprintf (f, " finalized"); if (node->local.disregard_inline_limits) @@ -1973,7 +1975,7 @@ cgraph_add_asm_node (tree asm_str) { struct cgraph_asm_node *node; - node = GGC_CNEW (struct cgraph_asm_node); + node = ggc_alloc_cleared_cgraph_asm_node (); node->asm_str = asm_str; node->order = cgraph_order++; node->next = NULL; @@ -2075,6 +2077,7 @@ cgraph_clone_node (struct cgraph_node *n, tree decl, gcov_type count, int freq, new_node->analyzed = n->analyzed; new_node->local = n->local; new_node->local.externally_visible = false; + new_node->local.used_from_object_file = false; new_node->local.local = true; new_node->local.vtable_method = false; new_node->global = n->global; @@ -2214,6 +2217,8 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node, ??? We cannot use COMDAT linkage because there is no ABI support for this. */ DECL_EXTERNAL (new_node->decl) = 0; + if (DECL_ONE_ONLY (old_decl)) + DECL_SECTION_NAME (new_node->decl) = NULL; DECL_COMDAT_GROUP (new_node->decl) = 0; TREE_PUBLIC (new_node->decl) = 0; DECL_COMDAT (new_node->decl) = 0; @@ -2266,6 +2271,7 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node, else new_node->clone.combined_args_to_skip = args_to_skip; new_node->local.externally_visible = 0; + new_node->local.used_from_object_file = 0; new_node->local.local = 1; new_node->lowered = true; new_node->reachable = true; @@ -2606,6 +2612,8 @@ cgraph_node_cannot_return (struct cgraph_node *node) bool cgraph_edge_cannot_lead_to_return (struct cgraph_edge *e) { + if (cgraph_node_cannot_return (e->caller)) + return true; if (e->indirect_unknown_callee) { int flags = e->indirect_info->ecf_flags; |