1. 29 Sep, 2006 1 commit
  2. 05 Oct, 2006 2 commits
  3. 03 Oct, 2006 6 commits
  4. 05 Oct, 2006 10 commits
  5. 21 Sep, 2006 1 commit
  6. 20 Sep, 2006 1 commit
  7. 19 Sep, 2006 2 commits
  8. 18 Sep, 2006 2 commits
  9. 17 Sep, 2006 2 commits
  10. 04 Oct, 2006 13 commits
    • simonpj@microsoft.com's avatar
      Comments only · 52f8fed4
      simonpj@microsoft.com authored
      52f8fed4
    • simonpj@microsoft.com's avatar
      Fix comment in RdrName · 7086e46a
      simonpj@microsoft.com authored
      7086e46a
    • simonpj@microsoft.com's avatar
      Improve unboxing of strict fields · 08a681f1
      simonpj@microsoft.com authored
      Note [Recursive unboxing]
      ~~~~~~~~~~~~~~~~~~~~~~~~~
      Be careful not to try to unbox this!
      	data T = MkT !T Int
      But it's the *argument* type that matters. This is fine:
      	data S = MkS S !Int
      because Int is non-recursive.
      
      
      Before this patch, we were only doing the unboxing if the *parent*
      data type was non-recursive (eg that meant S was not unboxed), but
      that is over-conservative. 
      
      This showed up with indexed data types (thanks to Roman for finding it)
      because indexed data types are conservatively regarded as always recursive.
      08a681f1
    • simonpj@microsoft.com's avatar
      Remove redundant dump · 365ab3da
      simonpj@microsoft.com authored
      365ab3da
    • simonpj@microsoft.com's avatar
      Trim imports · eb1c4917
      simonpj@microsoft.com authored
      eb1c4917
    • simonpj@microsoft.com's avatar
      Improve liberate-case to take account of coercions · 21174275
      simonpj@microsoft.com authored
      Note [Scrutinee with cast]
      ~~~~~~~~~~~~~~~~~~~~~~~~~~
      Consider this:
          f = \ t -> case (v `cast` co) of
      	         V a b -> a : f t
      
      Exactly the same optimistaion (unrolling one call to f) will work here, 
      despite the cast.  See mk_alt_env in the Case branch of libCase.
      
      This patch does the job.  For a change, it was really easy.
      21174275
    • simonpj@microsoft.com's avatar
      d3ff6e08
    • simonpj@microsoft.com's avatar
      Remove ILX from the GHC altogether (although I left the source file IlxGen in... · fb38b8ba
      simonpj@microsoft.com authored
      Remove ILX from the GHC altogether (although I left the source file IlxGen in case anyone wants to see it)
      fb38b8ba
    • simonpj@microsoft.com's avatar
      -frule-check is not a static flag · 7eb7a2d9
      simonpj@microsoft.com authored
      7eb7a2d9
    • simonpj@microsoft.com's avatar
      Tidy tyvar OccNames in TcTyClDecl · 4b922606
      simonpj@microsoft.com authored
      We want the universal and existential tyvars of a data constructor to
      have distinct OccNames.  It's confusing if they don't (in error messages,
      for example), and with the current way of generating IfaceSyn, it actally
      generates bogus interface files.  (Which bit Roman.)
      
      When IfaceSyn is full of Names, this won't matter so much, but it still
      seems cleaner.
      
      This patch adds a 'tidy' step to the generation of DataCon type 
      variables in TcTyClDecls.tcResultType 
      4b922606
    • simonpj@microsoft.com's avatar
      Improve pretty printing slightly · 1f315eba
      simonpj@microsoft.com authored
      1f315eba
    • simonpj@microsoft.com's avatar
      Second bite at the rules-only idea · a35f75aa
      simonpj@microsoft.com authored
      This is part 2 of the patch that improved the interaction of RULES and
      recursion.  It's vital that all Ids that may be referred to from later in
      the module are marked 'IAmALoopBreaker' because otherwise we may do
      postInlineUnconditionally, and lose the binding altogether. 
      
      So I've added a boolean rules-only flag to IAmALoopBreaker.  Now we can
      do inlining for rules-only loop-breakers. 
      a35f75aa
    • simonpj@microsoft.com's avatar
      Eliminate case-of-cast · 0477b389
      simonpj@microsoft.com authored
      Note [Case of cast]
      ~~~~~~~~~~~~~~~~~~~
      Consider 	case (v `cast` co) of x { I# ->
      		... (case (v `cast` co) of {...}) ...
      We'd like to eliminate the inner case.  We can get this neatly by 
      arranging that inside the outer case we add the unfolding
      	v |-> x `cast` (sym co)
      to v.  Then we should inline v at the inner case, cancel the casts, 
      and away we go
      	
      This patch does the job, fixing a performance hole reported by Roman.
      0477b389