[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