Exceptions are optimized away in certain situations
The issue came up in this thread on glasgow-haskell-users.
Steps to reproduce:
-- file Foo.hs
import Control.Exception
import Control.DeepSeq
main = evaluate (('a' : undefined) `deepseq` return () :: IO ())
$ ghc -fforce-recomp -fpedantic-bottoms -O Foo.hs
Expected result:
The program should fail with:
Foo: Prelude.undefined
Actual result:
The program succeeds.
Compiling the program with -fno-state-hack
helps.
Edited by Ben Gamari