Sandeep K Chaudhary <babbusandy2006@xxxxxxxxx> 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@xxxxxxxx> >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