diff options
Diffstat (limited to 'gcc/cgraphbuild.c')
-rw-r--r-- | gcc/cgraphbuild.c | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c index dfe677d9c02..9f1f244c2a2 100644 --- a/gcc/cgraphbuild.c +++ b/gcc/cgraphbuild.c @@ -79,9 +79,9 @@ record_reference (tree *tp, int *walk_subtrees, void *data) decl = get_base_var (*tp); if (TREE_CODE (decl) == FUNCTION_DECL) { - struct cgraph_node *node = cgraph_get_create_node (decl); + struct cgraph_node *node = cgraph_node::get_create (decl); if (!ctx->only_vars) - cgraph_mark_address_taken_node (node); + node->mark_address_taken (); ctx->varpool_node->add_reference (node, IPA_REF_ADDR); } @@ -142,10 +142,10 @@ record_eh_tables (struct cgraph_node *node, struct function *fun) if (DECL_FUNCTION_PERSONALITY (node->decl)) { tree per_decl = DECL_FUNCTION_PERSONALITY (node->decl); - struct cgraph_node *per_node = cgraph_get_create_node (per_decl); + struct cgraph_node *per_node = cgraph_node::get_create (per_decl); node->add_reference (per_node, IPA_REF_ADDR); - cgraph_mark_address_taken_node (per_node); + per_node->mark_address_taken (); } i = fun->eh->region_tree; @@ -223,8 +223,8 @@ mark_address (gimple stmt, tree addr, tree, void *data) addr = get_base_address (addr); if (TREE_CODE (addr) == FUNCTION_DECL) { - struct cgraph_node *node = cgraph_get_create_node (addr); - cgraph_mark_address_taken_node (node); + struct cgraph_node *node = cgraph_node::get_create (addr); + node->mark_address_taken (); ((symtab_node *)data)->add_reference (node, IPA_REF_ADDR, stmt); } else if (addr && TREE_CODE (addr) == VAR_DECL @@ -248,8 +248,8 @@ mark_load (gimple stmt, tree t, tree, void *data) { /* ??? This can happen on platforms with descriptors when these are directly manipulated in the code. Pretend that it's an address. */ - struct cgraph_node *node = cgraph_get_create_node (t); - cgraph_mark_address_taken_node (node); + struct cgraph_node *node = cgraph_node::get_create (t); + node->mark_address_taken (); ((symtab_node *)data)->add_reference (node, IPA_REF_ADDR, stmt); } else if (t && TREE_CODE (t) == VAR_DECL @@ -278,11 +278,12 @@ mark_store (gimple stmt, tree t, tree, void *data) return false; } -/* Record all references from NODE that are taken in statement STMT. */ +/* Record all references from cgraph_node that are taken in statement STMT. */ + void -ipa_record_stmt_references (struct cgraph_node *node, gimple stmt) +cgraph_node::record_stmt_references (gimple stmt) { - walk_stmt_load_store_addr_ops (stmt, node, mark_load, mark_store, + walk_stmt_load_store_addr_ops (stmt, this, mark_load, mark_store, mark_address); } @@ -320,7 +321,7 @@ unsigned int pass_build_cgraph_edges::execute (function *fun) { basic_block bb; - struct cgraph_node *node = cgraph_get_node (current_function_decl); + struct cgraph_node *node = cgraph_node::get (current_function_decl); struct pointer_set_t *visited_nodes = pointer_set_create (); gimple_stmt_iterator gsi; tree decl; @@ -344,37 +345,37 @@ pass_build_cgraph_edges::execute (function *fun) bb); decl = gimple_call_fndecl (stmt); if (decl) - cgraph_create_edge (node, cgraph_get_create_node (decl), - stmt, bb->count, freq); + node->create_edge (cgraph_node::get_create (decl), + stmt, bb->count, freq); else if (gimple_call_internal_p (stmt)) ; else - cgraph_create_indirect_edge (node, stmt, - gimple_call_flags (stmt), - bb->count, freq); + node->create_indirect_edge (stmt, + gimple_call_flags (stmt), + bb->count, freq); } - ipa_record_stmt_references (node, stmt); + node->record_stmt_references (stmt); if (gimple_code (stmt) == GIMPLE_OMP_PARALLEL && gimple_omp_parallel_child_fn (stmt)) { tree fn = gimple_omp_parallel_child_fn (stmt); - node->add_reference (cgraph_get_create_node (fn), + node->add_reference (cgraph_node::get_create (fn), IPA_REF_ADDR, stmt); } if (gimple_code (stmt) == GIMPLE_OMP_TASK) { tree fn = gimple_omp_task_child_fn (stmt); if (fn) - node->add_reference (cgraph_get_create_node (fn), + node->add_reference (cgraph_node::get_create (fn), IPA_REF_ADDR, stmt); fn = gimple_omp_task_copy_fn (stmt); if (fn) - node->add_reference (cgraph_get_create_node (fn), + node->add_reference (cgraph_node::get_create (fn), IPA_REF_ADDR, stmt); } } for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - ipa_record_stmt_references (node, gsi_stmt (gsi)); + node->record_stmt_references (gsi_stmt (gsi)); } /* Look for initializers of constant variables and private statics. */ @@ -422,10 +423,10 @@ unsigned int rebuild_cgraph_edges (void) { basic_block bb; - struct cgraph_node *node = cgraph_get_node (current_function_decl); + struct cgraph_node *node = cgraph_node::get (current_function_decl); gimple_stmt_iterator gsi; - cgraph_node_remove_callees (node); + node->remove_callees (); node->remove_all_references (); node->count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count; @@ -443,19 +444,19 @@ rebuild_cgraph_edges (void) bb); decl = gimple_call_fndecl (stmt); if (decl) - cgraph_create_edge (node, cgraph_get_create_node (decl), stmt, - bb->count, freq); + node->create_edge (cgraph_node::get_create (decl), stmt, + bb->count, freq); else if (gimple_call_internal_p (stmt)) ; else - cgraph_create_indirect_edge (node, stmt, - gimple_call_flags (stmt), - bb->count, freq); + node->create_indirect_edge (stmt, + gimple_call_flags (stmt), + bb->count, freq); } - ipa_record_stmt_references (node, stmt); + node->record_stmt_references (stmt); } for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - ipa_record_stmt_references (node, gsi_stmt (gsi)); + node->record_stmt_references (gsi_stmt (gsi)); } record_eh_tables (node, cfun); gcc_assert (!node->global.inlined_to); @@ -470,7 +471,7 @@ void cgraph_rebuild_references (void) { basic_block bb; - struct cgraph_node *node = cgraph_get_node (current_function_decl); + struct cgraph_node *node = cgraph_node::get (current_function_decl); gimple_stmt_iterator gsi; struct ipa_ref *ref = NULL; int i; @@ -487,9 +488,9 @@ cgraph_rebuild_references (void) FOR_EACH_BB_FN (bb, cfun) { for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - ipa_record_stmt_references (node, gsi_stmt (gsi)); + node->record_stmt_references (gsi_stmt (gsi)); for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - ipa_record_stmt_references (node, gsi_stmt (gsi)); + node->record_stmt_references (gsi_stmt (gsi)); } record_eh_tables (node, cfun); } @@ -564,8 +565,8 @@ public: unsigned int pass_remove_cgraph_callee_edges::execute (function *) { - struct cgraph_node *node = cgraph_get_node (current_function_decl); - cgraph_node_remove_callees (node); + struct cgraph_node *node = cgraph_node::get (current_function_decl); + node->remove_callees (); node->remove_all_references (); return 0; } |