This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Finding a relevant place for a custom GCC pass
- From: Sandeep K Chaudhary <babbusandy2006 at gmail dot com>
- To: "gcc-help at gcc dot gnu dot org" <gcc-help at gcc dot gnu dot org>
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 5 Jan 2014 22:47:33 -0800
- Subject: Re: Finding a relevant place for a custom GCC pass
- Authentication-results: sourceware.org; auth=none
- References: <CAEEAEzXzV4XVd6kadrCFq45qi+vK1iKa_6Nu9XdkWNYL5+1+wA at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1401060718110 dot 3878 at laptop-mg dot saclay dot inria dot fr>
Thanks for the reply Marc !
If I place my pass before ccp then I guess I have to implement the
means to perform calculations on my own so that it can duplicate the
functionality of ccp, right? I will also look at the source code to
see if I can modify the source code directly. Is pass_ccp in
tree-ssa-ccp.c the correct one to look at? Please let me know.
Yes, I have tried the second option you suggested. It's not convenient
for my purpose.
Thanks and regards,
Sandeep.
On Sun, Jan 5, 2014 at 10:24 PM, Marc Glisse <marc.glisse@inria.fr> wrote:
> On Sun, 5 Jan 2014, Sandeep K Chaudhary wrote:
>
>> Hi guys,
>>
>> I want to write a pass which can find the calculations performed on
>> the right hand side of each statement. In the below example -
>>
>> VAR1 = 1;
>> VAR1++;
>> VAR1 = VAR1 + 5;
>>
>> I want to be able to capture the equivalent statements i.e.
>>
>> VAR1 = 1;
>> VAR1 = 2;
>> VAR1 = 7;
>>
>> To achieve this, I dumped various intermediate files using
>> "-fdump-tree-all'. I looked at all of them manually and found that
>> either the statements are non-evaluated (during initial stages) or
>> they are completely optimized, hence losing the intermediate
>> assignment calculations (during later stages). There is no pass which
>> generates dumps related to the intermediate assignment calculations.
>>
>> I am not able to understand where I should aim to place my pass in
>> order to achieve the above mentioned functionality. Initially, I had
>> thought of writing IPA pass but I looked at 'copyprop' and 'forwprop'
>> dumps and saw that everything is optimized to the last statement. I am
>> not able to understand how a pass should be placed between GIMPLE
>> stage and later stages so that intermediate calculations such as the
>> ones mentioned above in the example, can be captured. Please provide
>> suggestions and help regarding this.
>
>
> Short answer: you can't.
>
> You can either have your passe before ccp, and duplicate the functionality
> of ccp, or you can hack the ccp pass to insert your code in it, but I doubt
> there is a suitable plugin hook for that, so you may have to edit gcc's
> source code directly.
>
> If you compile with -g and look at debug statements, the information is not
> completely lost after the pass that optimizes this to just VAR1 = 7, but it
> still wouldn't be convenient to use that for your purpose.
>
> --
> Marc Glisse
--
Thanks and regards,
Sandeep K Chaudhary.