This is the mail archive of the gcc@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]

Re: Finding a relevant place for a custom GCC pass


Sandeep K Chaudhary <babbusandy2006@gmail.com> wrote:
>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. You want to look at the il before substitute_and_fold together with the ccp lattice.

Richard.

>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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]