1. 08 May, 2010 7 commits
  2. 07 May, 2010 1 commit
  3. 28 Apr, 2010 2 commits
  4. 06 May, 2010 16 commits
  5. 09 Apr, 2010 6 commits
  6. 06 May, 2010 4 commits
  7. 05 May, 2010 3 commits
    • simonpj@microsoft.com's avatar
      Make the demand analyser sdd demands for strict constructors · c5b76e6f
      simonpj@microsoft.com authored
      This opportunity was spotted by Roman, and is documented in 
      Note [Add demands for strict constructors] in DmdAnal.
    • simonpj@microsoft.com's avatar
      Fix interaction of exprIsCheap and the lone-variable inlining check · 356e6869
      simonpj@microsoft.com authored
      See Note [Interaction of exprIsCheap and lone variables] in CoreUnfold
      This buglet meant that a nullary definition with an INLINE pragma
      counter-intuitively didn't get inlined at all.  Roman identified
      the bug.
    • simonpj@microsoft.com's avatar
      Matching cases in SpecConstr and Rules · 9abe2972
      simonpj@microsoft.com authored
      This patch has zero effect.  It includes comments,
      a bit of refactoring, and a tiny bit of commment-out
      code go implement the "matching cases" idea below.
      In the end I've left it disabled because while I think
      it does no harm I don't think it'll do any good either.
      But I didn't want to lose the idea totally. There's
      a thread called "Storable and constant memory" on
      the libraries@haskell.org list (Apr 2010) about it.
      Note [Matching cases]
      {- NOTE: This idea is currently disabled.  It really only works if
               the primops involved are OkForSpeculation, and, since
      	 they have side effects readIntOfAddr and touch are not.
      	 Maybe we'll get back to this later .  -}
         f (case readIntOffAddr# p# i# realWorld# of { (# s#, n# #) ->
            case touch# fp s# of { _ -> 
            I# n# } } )
      This happened in a tight loop generated by stream fusion that 
      Roman encountered.  We'd like to treat this just like the let 
      case, because the primops concerned are ok-for-speculation.
      That is, we'd like to behave as if it had been
         case readIntOffAddr# p# i# realWorld# of { (# s#, n# #) ->
         case touch# fp s# of { _ -> 
         f (I# n# } } )
  8. 04 May, 2010 1 commit