Wed Sep 10 01:30:14 PDT 2008  [EMAIL PROTECTED]
  * Fix Trac #2581: inlining of record selectors
  
  Bryan discovered that a non-trivial record selector (non-trivial in 
  the sense that it has to reconstruct the result value because of
  UNPACK directives) weren't being inlined.  The reason was that the
  unfolding generated by MkId.mRecordSelId was never being optimised
  *at all*, and hence looked big, and hence wasn't inlined.
  
  (The out-of-line version *is* put into the code of the module
  and *is* optimised, which made this bug pretty puzzling.  But the
  unfolding inside the record-selector-Id itself, which is a GlobalId
  and hence does not get its inlining updated like LocalIds, was
  big and fat.)
  
  Solution: I wrote a very simple optimiser, CoreUnfold.simplOptExpr,
  which does enough optimisation to solve this particular problem.
  It's short, simple, and will be useful in other contexts.
  

    M ./compiler/basicTypes/MkId.lhs -3 +5
    M ./compiler/coreSyn/CoreUnfold.lhs -2 +84

View patch online:
http://darcs.haskell.org/ghc/_darcs/patches/20080910083014-1287e-5ed8a179a850fff5f2fb8c62cede64c76c2c4f49.gz

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to