[GHC] #2439: Missed optimisation with dictionaries and loops
GHC
cvs-ghc at haskell.org
Mon Jan 28 00:22:18 CET 2013
#2439: Missed optimisation with dictionaries and loops
---------------------------------+------------------------------------------
Reporter: rl | Owner: simonpj
Type: bug | Status: new
Priority: lowest | Milestone: 7.6.2
Component: Compiler | Version: 6.9
Keywords: | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: Runtime performance bug
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
---------------------------------+------------------------------------------
Comment(by morabbin):
For the original example, `-fdicts-strict` seems to make no difference now
(i.e., it seems the "right" code is now produced even without `-fdicts-
strict`):
{{{
Foo.sum' :: forall a_aeH. GHC.Num.Num a_aeH => [a_aeH] -> a_aeH
[GblId, Arity=2, Caf=NoCafRefs]
Foo.sum' =
\ (@ a_c) ($dNum_afi :: GHC.Num.Num a_c) (xs_afb :: [a_c]) ->
let {
f_af2 :: a_c -> a_c -> a_c
[LclId]
f_af2 = GHC.Num.+ @ a_c $dNum_afi } in
case GHC.Num.fromInteger @ a_c $dNum_afi (__integer 0)
of z_Xf9 { __DEFAULT ->
letrec {
loop_aff [Occ=LoopBreaker] :: a_c -> [a_c] -> a_c
[LclId, Arity=2]
loop_aff =
\ (z1_af6 :: a_c) (ds_dfG :: [a_c]) ->
case z1_af6 of z2_Xfg { __DEFAULT ->
case ds_dfG of _ {
[] -> z2_Xfg;
: x_af8 xs1_af9 -> loop_aff (f_af2 z2_Xfg x_af8) xs1_af9
}
}; } in
loop_aff z_Xf9 xs_afb
}
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2439#comment:16>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list