
#13425: Semantically-equivalent expressions evaluating at different values with -O1 -------------------------------------+------------------------------------- Reporter: rbasso | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect result | Unknown/Multiple at runtime | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): That is deeply strange. I have established * It happens with HEAD. * The combination of `-ffull-laziness` and `-fspec-constr` makes it produce the wrong answer `[1]`. Omitting either makes it give the right answer `[1,128,129,255]`. * Here are my command lines. I switched off everything I could. Failure case: {{{ simonpj@cam-05-unx:~/tmp$ ~/5builds/HEAD-5/inplace/bin/ghc-stage1 -dcore- lint -O2 -o T13425 T13425.hs -fforce-recomp -fno-enable-rewrite-rules -fno-liberate-case -fno-strictness -fno-cse -fno-call-arity -fno- specialise -fno-float-in -fno-late-dmd-anal [1 of 1] Compiling Main ( T13425.hs, T13425.o ) Linking T13425 ... simonpj@cam-05-unx:~/tmp$ ./T13425 [1] }}} Switch off full laziness (works) {{{ simonpj@cam-05-unx:~/tmp$ ~/5builds/HEAD-5/inplace/bin/ghc-stage1 -dcore- lint -O -o T13425 T13425.hs -fforce-recomp -fno-enable-rewrite-rules -fno- liberate-case -fno-strictness -fno-cse -fno-call-arity -fno-specialise -fno-float-in -fno-late-dmd-anal -fno-full-laziness [1 of 1] Compiling Main ( T13425.hs, T13425.o ) Linking T13425 ... simonpj@cam-05-unx:~/tmp$ ./T13425 [1,128,129,255] }}} Switch off spec-constr (works) {{{ simonpj@cam-05-unx:~/tmp$ ~/5builds/HEAD-5/inplace/bin/ghc-stage1 -dcore- lint -O -o T13425 T13425.hs -fforce-recomp -fno-enable-rewrite-rules -fno- liberate-case -fno-strictness -fno-cse -fno-call-arity -fno-specialise -fno-float-in -fno-late-dmd-anal -fno-spec-constr [1 of 1] Compiling Main ( T13425.hs, T13425.o ) Linking T13425 ... simonpj@cam-05-unx:~/tmp$ ./T13425 [1,128,129,255] }}} I'm out the rest of today. This is a bad bug; might someone look? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13425#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler