[PATCH] Pass manager: add support for termination of pass list
Tue Nov 3 14:14:00 GMT 2015
On 11/03/2015 02:46 PM, Richard Biener wrote:
> On Fri, Oct 30, 2015 at 1:53 PM, Martin LiÅ¡ka <firstname.lastname@example.org> wrote:
>> On 10/30/2015 01:13 PM, Richard Biener wrote:
>>> So I suggest to do the push/pop of cfun there.
>>> do_per_function_toporder can be made static btw.
>> Right, I've done that and it works (bootstrap has been currently running),
>> feasible for HSA branch too.
>> /* Declare for plugins. */
>> extern void do_per_function_toporder (void (*) (function *, void *), void *);
>> Attaching the patch that I'm going to test.
> + cgraph_node::get (current_function_decl)->release_body ();
> + current_function_decl = NULL;
> + set_cfun (NULL);
> I'd have expected
> tree fn = cfun->decl;
> pop_cfun ();
> gcc_assert (!cfun);
> cgraph_node::get (fn)->release_body ();
Yeah, that works, but we have to add following hunk:
diff --git a/gcc/function.c b/gcc/function.c
index aaf49a4..4718fe1 100644
@@ -4756,6 +4756,13 @@ push_cfun (struct function *new_cfun)
+ if (cfun_stack.is_empty ())
+ set_cfun (NULL);
+ current_function_decl = NULL_TREE;
struct function *new_cfun = cfun_stack.pop ();
/* When in_dummy_function, we do have a cfun but current_function_decl is
NULL. We also allow pushing NULL cfun and subsequently changing
If you are fine with that, looks we've fixed all issues related to the change, right?
Updated version of the is attached.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 3815 bytes
Desc: not available
More information about the Gcc-patches