1. 28 Sep, 2017 1 commit
    • Simon Marlow's avatar
      mkDataConRep: fix bug in strictness signature (#14290) · a0671e2d
      Simon Marlow authored
      The strictness signature for a data con wrapper wasn't including any
      dictionary arguments, which meant that bangs on the fields of a
      constructor with an existential context would be moved to the wrong
      fields.  See T14290 for an example.
      
      Test Plan:
      * New test T14290
      * validate
      
      Reviewers: simonpj, niteria, austin, bgamari, erikd
      
      Reviewed By: simonpj, bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #14290
      
      Differential Revision: https://phabricator.haskell.org/D4040
      
      (cherry picked from commit 5935acdb)
      a0671e2d
  2. 04 Apr, 2017 1 commit
    • David Feuer's avatar
      Revert "Make raiseIO# produce topRes" · d67f0471
      David Feuer authored
      This reverts commit da4687f6.
      
      It's not entirely trivial to clean up the dead code this patch
      introduced. In particular, when we see
      
      ```
      case raiseIO# m s of
        s' -> e
      ```
      
      we want to know that `e` is dead. For scrutinees that are properly
      bottom (which we don't want to consider `raiseIO# m s` to be, this
      is handled by rewriting `bot` to `case bot of {}`. But if we do
      that for `raiseIO#`, we end up with
      
      ```
      case raiseIO# m s of {}
      ```
      
      which looks a lot like bottom and could confuse demand analysis.
      I think we need to wait with this change until we have a more
      complete story.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3413
      
      (cherry picked from commit e83af07e)
      d67f0471
  3. 09 Mar, 2017 1 commit
  4. 06 Mar, 2017 1 commit
  5. 25 Aug, 2016 1 commit
    • Joachim Breitner's avatar
      DmdAnal: Add a final, safe iteration · 8d92b88d
      Joachim Breitner authored
      this fixes #12368.
      
      It also refactors dmdFix a bit, removes some redundancies (such as
      passing around an strictness signature right next to an id, when that id
      is guaranteed to have been annotated with that strictness signature).
      
      Note that when fixed-point iteration does not terminate, we
      conservatively delete their strictness signatures (set them to nopSig).
      But this loses the information on how its strict free variables are
      used!
      
      Lazily used variables already escape via lazy_fvs. We ensure that in the
      case of an aborted fixed-point iteration, also the strict variables are
      put there (with a conservative demand of topDmd).
      
      Differential Revision: https://phabricator.haskell.org/D2392
      8d92b88d
  6. 07 Jul, 2016 1 commit
  7. 11 Mar, 2016 1 commit
  8. 12 Nov, 2015 1 commit
  9. 14 Apr, 2015 1 commit
    • Simon Peyton Jones's avatar
      Zap usage info in CSE (Trac #10218) · d261d4cb
      Simon Peyton Jones authored
      Trac #10218 reports a subtle bug that turned out to be:
      
      - CSE invalidated the usage information computed
        by earlier demand analysis, by increasing sharing
      
      - that made a single-entry thunk into a multi-entry thunk
      
      - and with -feager-blackholing, that led to <<loop>>
      
      The patch fixes it by making the CSE pass zap usage information for
      let-bound identifiers.   It can be restored by -flate-dmd-anal.
      
      (But making -flate-dmd-anal the default needs some careful work;
      see Trac #7782.)
      d261d4cb
  10. 07 Apr, 2015 1 commit
  11. 01 Jul, 2014 1 commit
    • Simon Peyton Jones's avatar
      Fix demand analyser for unboxed types · d6ee82b2
      Simon Peyton Jones authored
      This is a tricky case exposed by Trac #9254.  I'm surprised it hasn't
      shown up before, because it's happens when you use unsafePerformIO in
      the right way.
      
      Anyway, fixed now.  See Note [Analysing with absent demand]
      in Demand.lhs
      d6ee82b2
  12. 13 Feb, 2013 1 commit
  13. 20 Jul, 2011 1 commit
  14. 02 Apr, 2011 1 commit
  15. 01 Jan, 2010 1 commit
  16. 26 Nov, 2008 1 commit
  17. 21 Dec, 2007 1 commit
  18. 29 Oct, 2003 1 commit
  19. 23 Jun, 2003 1 commit
  20. 01 Aug, 2002 1 commit
  21. 06 Nov, 2001 1 commit
  22. 22 Aug, 2001 1 commit
  23. 11 Jul, 2001 1 commit
  24. 22 Jun, 2001 1 commit