On Thu, Mar 14, 2013 at 10:43:14PM +0000, Simon Peyton-Jones wrote:
> |  -----Original Message-----
> |  From: Tom Ellis
> |  The -ddump-simpl output below doesn't contain a case corresponding to the
> |  seq in sum', but the -ddump-prep does.  Isn't the output from simpl the
> |  input to prep?  If so, where does the case reappear from?  If not, how are
> |  simpl and prep related?
> |  
> |  It seems to have something to do with "Str=DmdType SS" but I don't
> |  understand.  This seems to come from the IdInfo on the Id which is the
> |  binder "Test.sum'" but [1] says that this information is optional so it
> |  seems strange that such crucial information would be encoded there.
>
> Check out 
> http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/HscMain
> and the notes at the top of
>        http://darcs.haskell.org/ghc/compiler/coreSyn/CorePrep.lhs

Thanks Simon.  That's lovely code and easy to read.

I see that the decision between let and case is made based on the
idDemandInfo which specifies whether a value is wanted strictly or not.

I presume that the explicit case is removed in the Simpl phase because it is
easier for optimisations to work on the Demand value than explicit case
statements.

Tom

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to