CSE missing an easy case
Consider this Core:
case f @Int of { r1 ->
case f @Int of { r2 -> ...
There is an easy common sub-expression to be had here, which would allow to eliminate a case expression, but CSE didn't spot it in GHC 8.
Easy to fix. Here's an example that shows it
module Bug where
f g x = let r :: [a] -> [a]
r = case g x of True -> reverse . reverse
False -> reverse
in
r `seq` r `seq` True
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |