1. 19 Nov, 2009 6 commits
    • Ian Lynagh's avatar
      852373b7
    • simonpj@microsoft.com's avatar
      Refactor case-merging and identical-alternative optimisations · 367e603d
      simonpj@microsoft.com authored
      These two optimisations were originally done by SimplUtils.mkCase
      *after* all the pieces have been simplified.  Some while ago I
      moved them *before*, so they were done by SimplUtils.prepareAlts.
      It think the reason was that I couldn't rely on the dead-binder 
      information on OutIds, and that info is useful in these optimisations.
      
      However, 
       (a) Other changes (notably moving case-binder-swap to OccurAnal)
           have meant that dead-binder information is accurate in 
           OutIds
      
       (b) When there is a cascade of case-merges, they happen in 
           one sweep if you do it after, but in many sweeps if you
           do it before.  Reason: doing it after means you are looking
           at nice simplified Core.
      367e603d
    • simonpj@microsoft.com's avatar
      Fix a nasty infelicity in the size computation of CoreUnfold · d21c80ea
      simonpj@microsoft.com authored
      The size computation was treating gigantic case expressions as
      practically free, which they really aren't.  It was exacerbated by
      recent decisions to charge 0 for naked variables and constructors, so
      the RHS of the case might look free too.  A good example was 
      Foreign.C.Error.errnoToIOError, which hsa lots of join points
      that were getting inlined way to vigorously, so we had:
      
        *** Simplifier Phase 2 [main]:
            Result size = 2983
        *** Core Linted result of Simplifier mode 2 [main], iteration 1 out of 4:
            Result size = 640327
        *** Core Linted result of Simplifier mode 2 [main], iteration 2 out of 4:
            Result size = 1659
      
      Notice that gigantic intermediate!
      
      This patch adds a small charge for each *alternative*.  Of course,
      that'll also mean that there's a bit less inling of things involving
      case expressions.
      d21c80ea
    • simonpj@microsoft.com's avatar
      Comments and white space only · 8a85f89b
      simonpj@microsoft.com authored
      8a85f89b
    • rl@cse.unsw.edu.au's avatar
      Fix splitAppTys · f240e9ab
      rl@cse.unsw.edu.au authored
      f240e9ab
    • Ben.Lippmeier@anu.edu.au's avatar
  2. 18 Nov, 2009 5 commits
  3. 17 Nov, 2009 3 commits
  4. 14 Nov, 2009 7 commits
  5. 11 Nov, 2009 1 commit
  6. 10 Nov, 2009 1 commit
  7. 06 Nov, 2009 1 commit
    • Ben.Lippmeier@anu.edu.au's avatar
      Break recursive imports between the RTS and base library on Windows. · 02d8f553
      Ben.Lippmeier@anu.edu.au authored
      The file rts/win32/libHSbase.def contains a list of all the 
      symbols from the base library that the RTS needs. 
      
      When building the RTS into a DLL on Windows, we want to link the DLL
      for the RTS before we link the DLL for the base library. We use 
      libHSbase.def to make the "import library" libHSbase.so.a, which 
      contains stubs for each of the symbols from the base library that
      the RTS needs.
      02d8f553
  8. 18 Nov, 2009 4 commits
  9. 17 Nov, 2009 3 commits
  10. 16 Nov, 2009 2 commits
  11. 13 Nov, 2009 1 commit
  12. 17 Nov, 2009 4 commits
  13. 15 Nov, 2009 1 commit
  14. 13 Nov, 2009 1 commit