ghc panic Simplifier ticks exhausted when trying UnfoldingDone x_alB
The following code causes a panic. It's the Y combinator.
module Y where
newtype F a = F { unF :: F a -> a }
y :: (a -> a) -> a
y = \f -> (\x -> x (F x)) (\x -> f (unF x x))
bash$ ~/src/ghc-7.10.0.20150123/installed/bin/ghc -c Y.hs
ghc: panic! (the 'impossible' happened)
(GHC version 7.10.0.20150123 for x86_64-unknown-linux):
Simplifier ticks exhausted
When trying UnfoldingDone x_alB
To increase the limit, use -fsimpl-tick-factor=N (default 100)
If you need to do this, let GHC HQ know, and what factor you needed
To see detailed counts use -ddump-simpl-stats
Total ticks: 4722
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
However it works fine in GHCi
bash$ ~/src/ghc-7.10.0.20150123/installed/bin/ghci Y.hs
GHCi, version 7.10.0.20150123: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Y ( Y.hs, interpreted )
Ok, modules loaded: Y.
*Y> take 10 (y (1:))
[1,1,1,1,1,1,1,1,1,1]
I have tried this code with 7.6.3, 7.8.3 and 7.10.1-rc2. Same result.
At least in 7.10.1-rc2 it doesn't work even with -fsimpl-tick-factor=100000 (that's 10^5^)
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.10.1-rc2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |