This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, after fixing an issue with callgraph thunk creation, I would like to enhance callgraph API a bit. My problem was that I was trying to expand_thunk after a body of the original function was removed. As a result, I created a call without arguments. The change was suggested by Honza. Thank you, Martin On 07/17/2014 03:49 PM, Martin Liška wrote:
On 06/30/2014 08:54 PM, Jeff Law wrote:On 06/30/14 05:49, Martin Liška wrote:On 06/17/2014 10:00 PM, Jeff Law wrote:On 06/13/14 04:26, mliska wrote:Hi, this small patch prepares remaining needed infrastructure for the new pass. Changelog: 2014-06-13 Martin Liska <mliska@suse.cz> Honza Hubicka <hubicka@ucw.cz> * ipa-utils.h (polymorphic_type_binfo_p): Function marked external instead of static. * ipa-devirt.c (polymorphic_type_binfo_p): Likewise. * ipa-prop.h (count_formal_params): Likewise. * ipa-prop.c (count_formal_params): Likewise. * ipa-utils.c (ipa_merge_profiles): Be more tolerant if we merge profiles for semantically equivalent functions. * passes.c (do_per_function): If we load body of a function during WPA, this condition should behave same. * varpool.c (ctor_for_folding): More tolerant assert for variable aliases created during WPA.Presumably we don't have any useful way to merge the cases where we have provides for SRC & DST in ipa_merge_profiles or even to guess which is more useful when presented with both? Does it make sense to log this into a debugging file when we drop one?Hello, this merge function was written by Honza, what do you think Honza about this note?I think this patch is fine. If adding logging makes sense, then feel free to do so and consider that trivial change pre-approved.I made a small change to this patch, where I moved 'gsi_next_nonvirtual_phi' from the pass to gimple-iterator.h. Ready for trunk with this change?Yes. I think with the exception of patch #3/5 everything looks good. I'll try to get another pass over #3 this week. What I looked at last week was pretty good; I'm pretty confident this will be wrapped up shortly. If #1/#2 make sense to install independent of #3, go ahead. #4/#5 are obviously dependent on #3. JeffHello, thank you for approval, this final version removes few hunks that are not needed any more. Changes are just cosmetic and I will commit the patch at the beginning of next week. Thanks, Martin
Attachment:
ipa-icf-release-body.changelog
Description: Text document
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index cb49cdc..ad32fb8 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1716,13 +1716,15 @@ release_function_body (tree decl) are free'd in final.c via free_after_compilation(). */ void -cgraph_node::release_body (void) +cgraph_node::release_body (bool keep_arguments) { ipa_transforms_to_apply.release (); if (!used_as_abstract_origin && cgraph_state != CGRAPH_STATE_PARSING) { DECL_RESULT (decl) = NULL; - DECL_ARGUMENTS (decl) = NULL; + + if (!keep_arguments) + DECL_ARGUMENTS (decl) = NULL; } /* If the node is abstract and needed, then do not clear DECL_INITIAL of its associated function function declaration because it's diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 2594ae5..5edcf74 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -890,7 +890,7 @@ public: Use this only for functions that are released before being translated to target code (i.e. RTL). Functions that are compiled to RTL and beyond are free'd in final.c via free_after_compilation(). */ - void release_body (void); + void release_body (bool keep_arguments = false); /* cgraph_node is no longer nested function; update cgraph accordingly. */ void unnest (void);
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |