Commit bc4a8809 by Jeff Law

Update LCM stuff.

From-SVN: r27386
parent 6570c0bd
...@@ -33,16 +33,12 @@ Haifa scheduler (haifa-sched.c, loop.[ch], unroll.[ch], genattrtab.c): ...@@ -33,16 +33,12 @@ Haifa scheduler (haifa-sched.c, loop.[ch], unroll.[ch], genattrtab.c):
Improvements to global cse and partial redundancy elimination: Improvements to global cse and partial redundancy elimination:
The current implementation of global cse uses partial redundancy elimination The current implementation of global cse uses a lazy code motion algorithm
as described in Chow's thesis. from Muchnick's "Advanced Compiler Design and Implementation".
Long term we want to use lazy code motion as the basis for partial redundancy Longer term we want to convert to an edge based LCM algorithm using the
elimination. lcm will find as many (or more) redunancies *and* it will new structures defined by flow.c. This allows for better expression
place the remaining computations at computationally optimal placement points placement and provides edge splitting "for free".
within the function. This reduces the number of redundant operations performed
as well as reducing register lifetimes. My experiments have shown that the
cases were the current PRE code hurts performance are greatly helped by using
lazy code motion.
lcm also provides the underlying framework for several additional optimizations lcm also provides the underlying framework for several additional optimizations
such as shrink wrapping, spill code motion, dead store elimination, and generic such as shrink wrapping, spill code motion, dead store elimination, and generic
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment