#4945: Another SpecConstr infelicity
---------------------------------+------------------------------------------
Reporter: batterseapower | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.0.1 | Keywords:
Testcase: | Blockedby:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: Runtime performance bug
---------------------------------+------------------------------------------
I'm beginning to sound like a broken record, but SpecConstr still doesn't
seem to be right! The last problem has been fixed, but I've found a new
one.
Please observe the output of compiling the attached code with:
{{{
./ghc -fforce-recomp -c -dverbose-core2core -O2 -fno-liberate-case
STUArray-Rewrite2.hs
}}}
In the output of SpecConstr we have a local letrec:
{{{
(letrec {
$wa_s1G7 [Occ=LoopBreaker]
:: forall s_aJm.
Data.Array.Base.STUArray
s_aJm GHC.Types.Int GHC.Types.Int
-> GHC.Prim.Int#
-> GHC.Prim.State# s_aJm
-> (# GHC.Prim.State# s_aJm, () #)
[LclId, Arity=3, Str=DmdType LLL]
$wa_s1G7 =
\ (@ s_aJm)
(w_s1FS
:: Data.Array.Base.STUArray
s_aJm GHC.Types.Int GHC.Types.Int)
(ww_s1FV :: GHC.Prim.Int#)
(w_s1FX :: GHC.Prim.State# s_aJm) ->
case GHC.Prim.># ww_s1FV ww_s1FN
of wild_Xj [Dmd=Just A] {
GHC.Types.False ->
case w_s1FS
of wild_aTj [Dmd=Just L]
{ Data.Array.Base.STUArray ds1_aTl [Dmd=Just U]
ds2_aTm [Dmd=Just U]
n_aTn [Dmd=Just U(L)]
ds3_aTo [Dmd=Just A] ->
case n_aTn
of wild_aTs [Dmd=Just A]
{ GHC.Types.I# x_aTu [Dmd=Just L] ->
case $wa_s1G0
@ s_aJm
w_s1FS
(GHC.Types.I# ww_s1FV)
0
(GHC.Prim.-# x_aTu 1)
w_s1FX
of wild_XUw [Dmd=Just A]
{ (# new_s_XUB [Dmd=Just L], r_XUD [Dmd=Just A] #) ->
$wa_s1G7
@ s_aJm w_s1FS (GHC.Prim.+# ww_s1FV 1) new_s_XUB
}
}
};
GHC.Types.True -> (# w_s1FX, GHC.Unit.() #)
}; } in
$wa_s1G7)
}}}
This is a local recursive loop with an invariant first argument (w_s1FS)
that is recrutinised every time! This seems deeply uncool.
This is with HEAD (7.1.20110203, incorporating the patch "Fix typo in
SpecConstr that made it not work at all")
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4945>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs