Panic with no extensions (StgCmmEnv: variable not found)
When I compile the attached Haskell program with -O2
, or -O1
with -fspec-constr
added, I get a compiler panic:
ghc: panic! (the 'impossible' happened)
(GHC version 8.2.2 for x86_64-unknown-mingw32):
StgCmmEnv: variable not found
$smergeSplit_s3bq
local binds for:
$WLL
$W:%
$W:&
cmp_s3ox
eta_s3oy
$wmergeLL_s3oz
$s$wpush_s3pZ
$wpush_s3q0
$s$wmergeAll_s3rl
$wmergeAll_s3rR
$wsplitDesc_s3sp
$wsplitAsc_s3sC
mergeSplit_s3tt
ss_s3tu
ds_s3tv
wild_s3tw
a1_s3tC
as'_s3tD
wild1_s3tE
b_s3tF
bs_s3tG
wild2_s3tH
ww1_s3tJ
ww2_s3tK
ww3_s3tL
ww4_s3tM
ww6_s3tO
ww7_s3tP
ww8_s3tQ
ww9_s3tR
Call stack:
CallStack (from HasCallStack):
prettyCurrentCallStack, called at compiler\utils\Outputable.hs:1133:58 in ghc:Outputable
callStackDoc, called at compiler\utils\Outputable.hs:1137:37 in ghc:Outputable
pprPanic, called at compiler\codeGen\StgCmmEnv.hs:147:9 in ghc:StgCmmEnv
I ran it with -dcore-lint
, and it gives the following messages (full .lint attached):
*** Core Lint errors : in result of Simplifier ***
<no location info>: warning:
In the expression: jump $smergeSplit_s3bN
ww_s34F ww_s34Q ww_s34R ww_s34S ww_s34T
$smergeSplit_s3bN [Occ=LoopBreaker]
:: [a_a23n] -> Int# -> Bool -> [a_a23n] -> Stack a_a23n -> [a_a23n]
[LclId[JoinId(5)],
Arity=5,
Str=<S,U><L,U><L,U><L,U><L,U>,
Unf=Unf{Src=<vanilla>, TopLvl=False, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=IF_ARGS [80 0 0 0 0] 554 0}] is out of scope
<no location info>: warning:
In the expression: jump $smergeSplit_s3bN
ww_s34F ww_s34Q ww_s34R ww_s34S ww_s34T
Invalid occurrence of a join variable: $smergeSplit_s3bN
The binder is either not a join point, or not valid here
<no location info>: warning:
In the expression: jump $smergeSplit_s3bN
ww_s34K ww_s34Q ww_s34R ww_s34S ww_s34T
$smergeSplit_s3bN [Occ=LoopBreaker]
:: [a_a23n] -> Int# -> Bool -> [a_a23n] -> Stack a_a23n -> [a_a23n]
[LclId[JoinId(5)],
Arity=5,
Str=<S,U><L,U><L,U><L,U><L,U>,
Unf=Unf{Src=<vanilla>, TopLvl=False, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=IF_ARGS [80 0 0 0 0] 554 0}] is out of scope
<no location info>: warning:
In the expression: jump $smergeSplit_s3bN
ww_s34K ww_s34Q ww_s34R ww_s34S ww_s34T
Invalid occurrence of a join variable: $smergeSplit_s3bN
The binder is either not a join point, or not valid here
Trac metadata
Trac field | Value |
---|---|
Version | 8.2.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |