1. 06 Mar, 2008 1 commit
    • simonpj@microsoft.com's avatar
      Improve SpecConstr for local bindings: seed specialisation from the calls · e5adcaf8
      simonpj@microsoft.com authored
      This patch makes a significant improvement to SpecConstr, based on
      Roman's experience with using it for stream fusion.  The main change is
      this:
      
        * For local (not-top-level) declarations, seed the specialisation 
          loop from the calls in the body of the 'let'.
      
      See Note [Local recursive groups] for discussion and example.  Top-level
      declarations are treated just as before.
      
      Other changes in this patch:
      
        * New flag -fspec-constr-count=N sets the maximum number of specialisations
          for any single function to N.  -fno-spec-constr-count removes the limit.
      
        * Refactoring in specLoop and friends; new algebraic data types 
          OneSpec and SpecInfo instead of the tuples that were there before
      
        * Be less keen to specialise on variables that are simply in scope.
          Example
            f p q = letrec g a y = ...g....  in g q p
          We probably do not want to specialise 'g' for calls with exactly
          the arguments 'q' and 'p', since we know nothing about them.
      
      e5adcaf8
  2. 05 Mar, 2008 5 commits
  3. 02 Mar, 2008 2 commits
  4. 29 Feb, 2008 1 commit
  5. 28 Feb, 2008 1 commit
  6. 27 Feb, 2008 1 commit
  7. 20 Feb, 2008 1 commit
  8. 28 Feb, 2008 10 commits
  9. 27 Feb, 2008 1 commit
  10. 26 Feb, 2008 6 commits
  11. 25 Feb, 2008 2 commits
  12. 19 Feb, 2008 1 commit
  13. 22 Feb, 2008 3 commits
  14. 24 Feb, 2008 2 commits
  15. 22 Feb, 2008 2 commits
  16. 20 Feb, 2008 1 commit