Record selectors behaving badly wrt optimisation
The attached program performs much worse with HEAD as of today (and presumably also 6.10.1) than 6.8.3.
> ghc-6.8.3 --make -O2 bug.hs
[1 of 1] Compiling Main ( bug.hs, bug.o )
Linking bug ...
> time ./bug
1.17s real 1.17s user 0.01s system 99% ./bug
> ghc-6.11 --make -O2 bug.hs
[1 of 1] Compiling Main ( bug.hs, bug.o )
Linking bug ...
> time ./bug
1.58s real 1.58s user 0.01s system 99% ./bug
The problem appears to be in the code for delete
, GHC has duplicated two calls to next
.
Also note this is a version of the code we have in eyeball/IOList.lhs
which illustrates some other problems in the current optimiser (although the other problems are not regressions, which is why I'm highlighting this one).
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |