Matt Davis <mattdav...@gmail.com> writes:

> I am creating a few functions at compile time, via a gcc plugin.  I create the
> functions and their bodies, and insert them into the call graph.  This is all
> done before "cgraph_finalize_compilation_unit()" has been called.  I then have
> another compiler pass, which gets started after the SSA representation has 
> been
> generated, and it is this pass that uses the functions created previously, in
> the much earlier pass.  The problem is that by the time the created functions
> are used, the cgraph has already removed those nodes since they are disjoint. 
>  I
> tried creating and modifying the functions in the same pass, but that was not
> successful either.  I did not see any flag I could set in the cgraph nodes,
> which are created in the first pass I mentioned preventing them from being
> removed.  Is there a way I can keep those nodes around so the functions 
> created
> at compile time actually get built?

In effect, you want to give your functions the "used" attribute.  If you
look at handle_used_attribute in c-family/c-common.c, you will see that
you want to set DECL_PRESERVE_P.

Ian

Reply via email to