diff options
-rw-r--r-- | gcc/cp/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/cp/class.c | 2 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 2 | ||||
-rw-r--r-- | gcc/cp/method.c | 12 | ||||
-rw-r--r-- | gcc/cp/optimize.c | 9 |
5 files changed, 30 insertions, 10 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f9c0fb2..f6dbddc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,20 @@ 2011-04-12 Martin Jambor <mjambor@suse.cz> + * class.c (cp_fold_obj_type_ref): Call cgraph_get_node instead of + cgraph_get_create_node. + * decl2.c (cp_write_global_declarations): Call cgraph_get_node + instead of cgraph_get_create_node. + * method.c (make_alias_for_thunk): Call cgraph_get_node + instead of cgraph_get_create_node, assert it returns non-NULL. + (use_thunk): Likewise. + * optimize.c (maybe_clone_body): Call cgraph_same_body_alias only + when flag_syntax_only is not set. Call cgraph_get_node instead of + cgraph_get_create_node. + (maybe_clone_body): Call cgraph_get_node instead of + cgraph_get_create_node. + +2011-04-12 Martin Jambor <mjambor@suse.cz> + * class.c (cp_fold_obj_type_ref): Call cgraph_get_create_node instead of cgraph_node. * decl2.c (cxx_callgraph_analyze_expr): Likewise. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 634b2bf..b6aebae 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -8401,7 +8401,7 @@ cp_fold_obj_type_ref (tree ref, tree known_type) DECL_VINDEX (fndecl))); #endif - cgraph_get_create_node (fndecl)->local.vtable_method = true; + cgraph_get_node (fndecl)->local.vtable_method = true; return build_address (fndecl); } diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 9e63c87..5b6f6ed 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3893,7 +3893,7 @@ cp_write_global_declarations (void) if (!DECL_EXTERNAL (decl) && decl_needed_p (decl) && !TREE_ASM_WRITTEN (decl) - && !cgraph_get_create_node (decl)->local.finalized) + && !cgraph_get_node (decl)->local.finalized) { /* We will output the function; no longer consider it in this loop. */ diff --git a/gcc/cp/method.c b/gcc/cp/method.c index e18143e2..6b26806 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -259,9 +259,10 @@ make_alias_for_thunk (tree function) if (!flag_syntax_only) { - struct cgraph_node *aliasn; - aliasn = cgraph_same_body_alias (cgraph_get_create_node (function), - alias, function); + struct cgraph_node *funcn, *aliasn; + funcn = cgraph_get_node (function); + gcc_checking_assert (funcn); + aliasn = cgraph_same_body_alias (funcn, alias, function); DECL_ASSEMBLER_NAME (function); gcc_assert (aliasn != NULL); } @@ -280,6 +281,7 @@ use_thunk (tree thunk_fndecl, bool emit_p) tree virtual_offset; HOST_WIDE_INT fixed_offset, virtual_value; bool this_adjusting = DECL_THIS_THUNK_P (thunk_fndecl); + struct cgraph_node *funcn; /* We should have called finish_thunk to give it a name. */ gcc_assert (DECL_NAME (thunk_fndecl)); @@ -379,7 +381,9 @@ use_thunk (tree thunk_fndecl, bool emit_p) a = nreverse (t); DECL_ARGUMENTS (thunk_fndecl) = a; TREE_ASM_WRITTEN (thunk_fndecl) = 1; - cgraph_add_thunk (cgraph_get_create_node (function), thunk_fndecl, function, + funcn = cgraph_get_node (function); + gcc_checking_assert (funcn); + cgraph_add_thunk (funcn, thunk_fndecl, function, this_adjusting, fixed_offset, virtual_value, virtual_offset, alias); diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index 2110779..87302dc 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -309,8 +309,9 @@ maybe_clone_body (tree fn) && (!DECL_ONE_ONLY (fns[0]) || (HAVE_COMDAT_GROUP && DECL_WEAK (fns[0]))) - && cgraph_same_body_alias (cgraph_get_create_node (fns[0]), clone, - fns[0])) + && (flag_syntax_only + || cgraph_same_body_alias (cgraph_get_node (fns[0]), clone, + fns[0]))) { alias = true; if (DECL_ONE_ONLY (fns[0])) @@ -424,8 +425,8 @@ maybe_clone_body (tree fn) /* If *[CD][12]* dtors go into the *[CD]5* comdat group and dtor is virtual, it goes into the same comdat group as well. */ DECL_COMDAT_GROUP (fns[2]) = comdat_group; - base_dtor_node = cgraph_get_create_node (fns[0]); - deleting_dtor_node = cgraph_get_create_node (fns[2]); + base_dtor_node = cgraph_get_node (fns[0]); + deleting_dtor_node = cgraph_get_node (fns[2]); gcc_assert (base_dtor_node->same_comdat_group == NULL); gcc_assert (deleting_dtor_node->same_comdat_group == NULL); base_dtor_node->same_comdat_group = deleting_dtor_node; |