#701: Better CSE optimisation
---------------------------------+------------------------------------------
Reporter: simonmar | Owner: michalt
Type: task | Status: new
Priority: normal | Milestone: _|_
Component: Compiler | Version: 6.4.1
Keywords: | Testcase: N/A
Blockedby: | Difficulty: Difficult (2-5 days)
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
Changes (by michalt):
* owner: => michalt
Comment:
Interesting ticket. :)
> One possible way forward is to have a separate CSE pass that transformed
> expressions containing common subexpressions into the let-form above,
and let
> the existing CSE pass do the final replacement.
But how to identify those subexpressions that are common? Wouldn't that
need
another pass? I was thinking about sligthly modifying the idea: have one
pass to
identify common subexpressions and then a second one that is an improved
version
of current CSE, i.e. uses the information about what subexpressions could
be
shared to split more complex expressions and also does the elimination
along the
way. Like
{{{
let x = e1 + e2
y = e1 + e3
}}}
So `e1` would be identified as a common subexpression and then so we would
transfor the above to:
{{{
let z = e1
x = z + e2
y = z + e3
}}}
What do you think?
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/701#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs