[llvm-commits] SSI Patch

Duncan Sands baldrick at free.fr
Fri Aug 28 07:27:20 PDT 2009


Hi Andre,

> 1. We had a function isUsedInTerminator that tested if a comparator was 
> used in the terminator of its parent BasicBlock. This is wrong because a 
> comparator can be created in a BasicBlock and used in the terminator of 
> other BasicBlock, and can be used in more than one.
> 
> 2. There was that list of all variables converted to SSI. I decided to 
> remove it as you guys didn't like to have list holding memory. Now 
> insertSigma tests if a sigma is already there before it inserts any.
> 
> 3. InsertSSIphi had the test if (DF_BB == DF->end()) twice, one with 
> break and the other with continue.  I kept the continue, which is the 
> correct one.
> 
> 4.  I changed the order in which we rename variables, and now fixphis 
> will only need to get the case where a predecessor of a phi is missing, 
> it will not have to change value for any phi anymore, because I insert 
> the right information on the first time.
> 
> 5.  SSI is not pruned anymore. To have it pruned we needed to test if a 
> PHI or SIGMA dominated any use of the original variable. This costs 
> time, and a pruned SSI is not under SSI rules. This was not a problem 
> for ABCD, but could be for any other optimization that used it. So all 
> PHIS and SIGMAS related to branch instructions are inserted. Those other 
> optimization passes can remove them later if necessary.

the "right" way to do this is to submit 5 patches, one for each change
you describe above.

Ciao,

Duncan.




More information about the llvm-commits mailing list