How to access the function body of a constructor?

Swati Rathi swatirathi@cse.iitb.ac.in
Sat Nov 8 09:09:00 GMT 2014


This post is in continuation to my below post.

My pass is hooked after pass_ipa_pta as already mentioned below.
I have enabled the LTO framework by using the flags "-flto 
-flto-partition=none".

Without the LTO mode, macro DECL_CLONED_FUNCTION returns the cloned 
constructor.
However, in the LTO mode this information is not available.

How do I make this information available in the LTO framework?
Is there any other way to get the cloned copy of the constructor 
"__base_ctor" from "__comp_ctor"?


Regards,
Swati

On Monday 15 September 2014 03:41 PM, Swati Rathi wrote:
>
> I am trying to access the body of a constructor.
> My pass is hooked after pass_ipa_pta.
>
> Constructor for a class is invoked as :
>
>     __comp_ctor  (&b);
>
> However the constructor body is dumped as
>     __base_ctor  (struct B * const this)
>     {
>         :
>     }
>
> I am not able to access basic blocks from __comp_ctor?
> Is __comp_ctor a cloned function of  __base_ctor?
>
> Also assuming it to be a cloned function, I tried to access it using 
> "clones", "clones_of" fields of structure cgraph_node.
> But these fields does not store anything (or at least for the 
> functions I tried).
> What does these fields (clones, clone_of etc.) store?
>
> Will the macro DECL_CLONED_FUNCTION give me __base_ctor from 
> __comp_ctor ?
> I tried using it but it gives an error, "undefined symbol: 
> _Z22decl_cloned_function_pPK9tree_nodeb".
> Kindly tell me way to access the constructor body.
>
> Regards,
> Swati
>



More information about the Gcc mailing list