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
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).