1. 18 Feb, 2016 1 commit
    • Simon Peyton Jones's avatar
      Fix desugaring of bang-pattern let-bindings · 01449eb5
      Simon Peyton Jones authored
      When implementing Strict Haskell, the patch 46a03fbe didn't faithfully
      implement the semantics given in the manual. In particular there was
      an ad-hoc case in mkSelectorBinds for "strict and no binders" that
      didn't work.
      
      This patch fixes it, curing Trac #11572.
      
      Howver it forced me to think about banged let-bindings, and I rather
      think we do not have quite the right semantics yet, so I've opened
      Trac #11601.
      01449eb5
  2. 17 Feb, 2016 1 commit
  3. 14 Dec, 2015 1 commit
  4. 14 Nov, 2015 1 commit
  5. 02 Oct, 2015 1 commit
    • Ben Gamari's avatar
      Fix treatment of -0.0 · eb975d2e
      Ben Gamari authored
      Here we fix a few mis-optimizations that could occur in code with
      floating point comparisons with -0.0. These issues arose from our
      insistence on rewriting equalities into case analyses and the
      simplifier's ignorance of floating-point semantics.
      
      For instance, in Trac #10215 (and the similar issue Trac #9238) we
      turned `ds == 0.0` into a case analysis,
      
      ```
      case ds of
          __DEFAULT -> ...
          0.0 -> ...
      ```
      
      Where the second alternative matches where `ds` is +0.0 and *also* -0.0.
      However, the simplifier doesn't realize this and will introduce a local
      inlining of `ds = -- +0.0` as it believes this is the only
      value that matches this pattern.
      
      Instead of teaching the simplifier about floating-point semantics
      we simply prohibit case analysis on floating-point scrutinees and keep
      this logic in the comparison primops, where it belongs.
      
      We do several things here,
      
       - Add test cases from relevant tickets
       - Clean up a bit of documentation
       - Desugar literal matches against floats into applications of the
         appropriate equality primitive instead of case analysis
       - Add a CoreLint to ensure we don't pattern match on floats in Core
      
      Test Plan: validate with included testcases
      
      Reviewers: goldfire, simonpj, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1061
      
      GHC Trac Issues: #10215, #9238
      eb975d2e
  6. 27 Jul, 2015 1 commit
    • Adam Sandberg Eriksson's avatar
      Implementation of StrictData language extension · f842ad6c
      Adam Sandberg Eriksson authored
      This implements the `StrictData` language extension, which lets the
      programmer default to strict data fields in datatype declarations on a
      per-module basis.
      
      Specification and motivation can be found at
      https://ghc.haskell.org/trac/ghc/wiki/StrictPragma
      
      This includes a tricky parser change due to conflicts regarding `~` in
      the type level syntax: all ~'s are parsed as strictness annotations (see
      `strict_mark` in Parser.y) and then turned into equality constraints at
      the appropriate places using `RdrHsSyn.splitTilde`.
      
      Updates haddock submodule.
      
      Test Plan: Validate through Harbormaster.
      
      Reviewers: goldfire, austin, hvr, simonpj, tibbe, bgamari
      
      Reviewed By: simonpj, tibbe, bgamari
      
      Subscribers: lelf, simonpj, alanz, goldfire, thomie, bgamari, mpickering
      
      Differential Revision: https://phabricator.haskell.org/D1033
      
      GHC Trac Issues: #8347
      f842ad6c
  7. 26 May, 2015 1 commit
  8. 10 Dec, 2014 1 commit
  9. 28 Nov, 2014 1 commit
  10. 03 Apr, 2014 1 commit
  11. 11 Feb, 2013 2 commits
  12. 16 Jul, 2012 2 commits
  13. 15 May, 2012 1 commit
  14. 18 Jan, 2012 1 commit
  15. 20 Jul, 2011 1 commit
  16. 12 May, 2011 1 commit
  17. 30 Apr, 2011 1 commit
  18. 03 Sep, 2010 1 commit
  19. 20 Jul, 2009 1 commit
  20. 30 Mar, 2009 1 commit
  21. 17 Aug, 2008 1 commit
  22. 05 Jan, 2008 1 commit
  23. 20 Dec, 2007 1 commit
  24. 26 Sep, 2007 1 commit
  25. 02 Aug, 2007 1 commit
  26. 05 May, 2007 1 commit
  27. 16 Mar, 2007 1 commit
  28. 18 Jan, 2006 1 commit
    • simonmar's avatar
      [project @ 2006-01-18 16:31:10 by simonmar] · ff6b4956
      simonmar authored
      Add a fast version of the testsuite
      
      The idea is to have a way to run as much of the testsuite as possible
      in a short time, so that we'll run it more often (such as just before
      checking in a change, for example).  'make fast' tries for good
      coverage without using too many cycles.  Currently it takes about 4
      minutes on a fast machine with an optimised GHC build; I think this
      might still be a little on the slow side.
      
      When you say 'make fast' in testsuite/tests/ghc-regress, we run each
      test only one way, and all of the long-running tests are omitted.
      Also, to get the runtime down further, I arbitrarily omitted many of
      the should_run tests (because these tend to take a lot longer than
      should_compile or should_fail tests).  I tried to keep a
      representative few in each category.
      ff6b4956
  29. 24 Nov, 2005 1 commit
  30. 03 Jun, 2003 1 commit
  31. 21 Nov, 2002 1 commit
  32. 31 Jul, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-07-31 14:24:18 by simonmar] · e5063a04
      simonmar authored
      Revamp the testsuite framework.  The previous framework was an
      experiment that got a little out of control - a whole new language
      with an interpreter written in Haskell was rather heavyweight and left
      us with a maintenance problem.
      
      So the new test driver is written in Python.  The downside is that you
      need Python to run the testsuite, but we don't think that's too big a
      problem since it only affects developers and Python installs pretty
      easily onto everything these days.
      
      Highlights:
      
        - 790 lines of Python, vs. 5300 lines of Haskell + 720 lines of
          <strange made-up language>.
      
        - the framework supports running tests in various "ways", which should
          catch more bugs.  By default, each test is run in three ways:
          normal, -O, and -O -fasm.  Additionally, if profiling libraries
          have been built, another way (-O -prof -auto-all) is added.  I plan
          to also add a 'GHCi' way.
      
          Running tests multiple ways has already shown up some new bugs!
      
        - documentation is in the README file and is somewhat improved.
      
        - the framework is rather less GHC-specific, and could without much
          difficulty be coaxed into using other compilers.  Most of the
          GHC-specificness is in a separate configuration file (config/ghc).
      
      Things may need a while to settle down.  Expect some unexpected
      failures.
      e5063a04
  33. 07 Jun, 2002 1 commit
  34. 17 May, 2002 1 commit
  35. 29 Aug, 2001 1 commit
  36. 11 Jul, 2001 1 commit
  37. 22 Jun, 2001 1 commit