Incorrect optimization with Data.ByteString.append
The following program does not give the same result with -O2 and without:
import qualified Data.ByteString as B
main = let a = B.singleton 65 in print (func a a)
func y z = B.append r s
where
r = B.map (succ) x
s = B.map (succ . succ) x
x = B.append y z
Result observed with GHC 7.6.1 (bytestring-0.10.0.0):
$ ghc --make test -fforce-recomp && ./test
[1 of 1] Compiling Main ( test.hs, test.o )
Linking test ...
"BBCC"
$ ghc --make test -fforce-recomp -O2 && ./test
[1 of 1] Compiling Main ( test.hs, test.o )
Linking test ...
"CCCC"
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries (other) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |