[LLVMbugs] Reassociation Transform

Chris Lattner sabre at nondot.org
Thu Oct 31 09:25:15 PST 2002


>    3. ReassociateExpr was changing (a+b)+c into a+(b+c), which is a
>       problem of the definition of c does not dominate (b+c).  I fixed
>       this by creating a new instruction for (b+c) and inserting it just
>       before the instruction that calculates a+(b+c).  I'm confident
>       that this approach is correct, but may increase register pressure
>       since it may extend the live ranges of b&c.
>    4. I wiggled the main loop in ReassociateBB around a bit to try and
>       preserve instruction names.  Placing the Sub test before the
>       reassociate test makes the iterator manipulation simpler.

Sounds great to me.  Note that this patch exposes a latent bug in
BinaryOperator::isNeg, so make sure you apply this as well:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20021028/001181.html

Here's the reassociate patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20021028/001182.html

Here we reenable reassociate in gccas:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20021028/001183.html

... and in the sparc backend:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20021028/001184.html

Thanks again!

-Chris

-- 
http://llvm.cs.uiuc.edu/
http://www.nondot.org/~sabre/Projects/




More information about the llvm-bugs mailing list