Skip to content
  • Simon Peyton Jones's avatar
    [project @ 2001-10-15 15:06:01 by simonpj] · 713b32a5
    Simon Peyton Jones authored
    --------------------------
    	Tidy up arity propagation
    	--------------------------
    
    Due to excessive complexity, correct arity information was getting
    lost on the way to interface files.  As a result, a function that had
    CPR info __S SLm (say), was getting arity 0, and this confused the (old)
    CPR analyser ("lub of function and HasCPR").
    
    I hope this fixes the above error (which showed up somewhere in
    compiling Edison), but I'm going to commit it right now anyway.
    Meanwhile I'll recompile Edison too.
    
    
    Details
    ~~~~~~~
    Digging out the rather obscure cause made me tidy up the CgInfo stuff.
    The story is now
    
    * The CgInfo field of an Id gets attached to the Id *only* in
      the TypeEnv of the ModuleDetails, during CoreTidy.
    
      This ModuleDetails stuff is used
    	a) to generate the interface file
    	b) to import into other modules in GHCi
    
    * No CgInfo field is in the CoreBindings which are passed
      downsteam to CorePrep and thence CodeGen.  Quite right too...
      it's the downstream stuff that *generates* the CgInfo.
    
    * But the Arity field *is* now passed on through CoreTidy
      (like strictness info) since it is usefully used by CorePrep.
    
    * On the way I simplified the ArityInfo field of an IdInfo
      to simply
    		Arity
      instead of
    		Maybe Arity
    713b32a5