1. 06 Mar, 2017 8 commits
    • ruperthorlick's avatar
      Changed OverLit warnings to work with negative literals (#13257) · 3fdabe98
      ruperthorlick authored
      Test Plan: Validate, check generated warnings
      
      Reviewers: austin, bgamari, dfeuer
      
      Reviewed By: bgamari, dfeuer
      
      Subscribers: dfeuer, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3281
      3fdabe98
    • Tamar Christina's avatar
      Add GCC bin folder to search path. · 016b10c5
      Tamar Christina authored
      D3155 added pthread by default to GHCi.  However this was only tested
      using something running in an msys2 shell. As it turns out it's been
      picking up pthread in the environment and not the inplace gcc.
      
      This results in an error when using ghci outside of msys2.
      
      Test Plan: start cmd, start ghc-stage2 --interactive
      
      Reviewers: austin, hvr, bgamari, dfeuer
      
      Reviewed By: dfeuer
      
      Subscribers: dfeuer, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3279
      016b10c5
    • Ben Gamari's avatar
      Read COMPLETE sets from external packages · 8ca4bb1c
      Ben Gamari authored
      Currently, `COMPLETE` pragmas are not read from external packages at
      all, which quite limits their usefulness. This extends
      `ExternalPackageState` to include `COMPLETE` sets from other packages,
      and plumbs around the appropriate values to make it work the way you'd
      expect it to.
      
      Requires a `binary` submodule update.
      
      Fixes #13350.
      
      Test Plan: make test TEST=T13350
      
      Reviewers: rwbarton, mpickering, austin, simonpj, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3257
      8ca4bb1c
    • Gabor Greif's avatar
      Typos in comments and manual · 749740f9
      Gabor Greif authored
      749740f9
    • Simon Peyton Jones's avatar
      Make FloatOut/SetLevels idemoptent on bottoming functions · fb9ae288
      Simon Peyton Jones authored
      This fixes Trac #13369.  It turned out that I really had got the
      bottoming-float code wrong, again.  The new story is explained in
      Note [Bottoming floats], esp item (3), and Note [Floating from a RHS].
      
      I didn't make a regression test; it's hard to to so.
      
      Nofib result are good
      
      --------------------------------------------------------------------------------
              Program           Size    Allocs   Runtime   Elapsed  TotalMem
      --------------------------------------------------------------------------------
               banner          -2.2%     -4.6%      0.00      0.00     +0.0%
                 bspt          -1.3%     -1.6%      0.01      0.01     +0.0%
            cacheprof          -1.8%     -0.3%     +3.7%     +3.7%     -0.9%
         digits-of-e2          -1.0%     -1.5%     -0.5%     -0.5%     +0.0%
               expert          -1.3%     -0.2%      0.00      0.00     +0.0%
               n-body          -1.1%     -0.2%     +0.1%     +0.1%     +0.0%
              veritas          -2.9%     -0.1%      0.00      0.00     +0.0%
      --------------------------------------------------------------------------------
                  Min          -2.9%     -4.6%     -7.4%     -7.4%    -19.8%
                  Max          -1.0%     +0.0%     +5.2%     +5.1%    +10.0%
       Geometric Mean          -1.2%     -0.1%     +0.5%     +0.5%     -0.1%
      
      I /think/ all this is due to this error-floating change; but it's possible
      that some was due to commit "Fix CSE (again) on literal strings" a couple
      of commits earlier.
      fb9ae288
    • Simon Peyton Jones's avatar
      Comments only · 995ab74b
      Simon Peyton Jones authored
      995ab74b
    • Simon Peyton Jones's avatar
      Tiny refactor · 1163f4f2
      Simon Peyton Jones authored
      1163f4f2
    • Simon Peyton Jones's avatar
      Fix CSE (again) on literal strings · 9304df52
      Simon Peyton Jones authored
      Fixes Trac #13367.  See Note [Take care with literal strings]
      9304df52
  2. 04 Mar, 2017 2 commits
  3. 03 Mar, 2017 13 commits
    • rwbarton's avatar
      Comments only, in CSE (#13340) · 5ed56fc8
      rwbarton authored
      Reviewers: simonpj, austin, bgamari, dfeuer
      
      Reviewed By: dfeuer
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3268
      5ed56fc8
    • rwbarton's avatar
      Deserialize IfaceId more lazily · 64462544
      rwbarton authored
      This change sped up the total validate --build-only time by 0.8%
      on my test system; hopefully a representative result.
      
      I didn't bother making the other constructors lazy because for
      IfaceData and IfaceClass we need to pull on some of the fields
      in loadDecl, and all the others seem much more rare than IfaceId.
      
      Test Plan: validate, perf
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3269
      64462544
    • Ben Gamari's avatar
      Produce KindReps for common kinds in GHC.Types · c1dacb8a
      Ben Gamari authored
      Unfortunately this comes with a fair bit of implementation cost. Perhaps
      some refactoring would help, but in the interest of getting 8.2 out the
      door I'm pushing as-is.
      
      While this doesn't have nearly the effect on compiler allocations
      that D3166 has, it's still nothing to sneeze at. nofib shows,
      ```
      ------------------------------------------------------------------------
              Program               master           D3166            D3219
      ------------------------------------------------------------------------
              -1 s.d.                -----          -3.555%          -4.081%
              +1 s.d.                -----          +1.937%          +1.593%
              Average                -----          -0.847%          -1.285%
      ```
      
      Test Plan: Validate
      
      Reviewers: austin
      
      Subscribers: thomie, simonmar
      
      Differential Revision: https://phabricator.haskell.org/D3219
      c1dacb8a
    • Ben Gamari's avatar
      TcTypeable: Try to reuse KindReps · a694cee7
      Ben Gamari authored
      Here we rework the TcTypeable implementation to reuse KindRep bindings
      when possible. This is an attempt at minimizing the impact of Typeable
      binding generation by reducing the number of bindings that we produce.
      
      It turns out that this produces some pretty reasonable compiler
      allocations improvements. It seems to erase most of the increases
      initially introduced by TTypeable in the testsuite. Moreover, nofib
      shows,
      ```
              -1 s.d.                -----          -3.555%
              +1 s.d.                -----          +1.937%
              Average                -----          -0.847%
      ```
      
      Here are a few of the high-scorers (ignore last column, which is for
      D3219),
      ```
      veritas
                Types             88800920         -18.945%         -21.480%
      
      veritas
              Tactics            540766744         -27.256%         -27.338%
      
      sched
                 Main            567013384          -4.947%          -5.358%
      
      listcompr
                 Main            532300000          -4.273%          -4.572%
      
      listcopy
                 Main            537785392          -4.382%          -4.635%
      
      anna
             BaseDefs           1984225032         -10.639%         -10.832%
      
      ```
      as expected, these tend to be modules with either very many or very
      large types.
      
      Test Plan: Validate
      
      Reviewers: austin, dfeuer
      
      Subscribers: simonmar, dfeuer, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3166
      a694cee7
    • Ben Gamari's avatar
      Revert "Read COMPLETE sets from external packages" · c02896ab
      Ben Gamari authored
      This reverts commit 0d2f7330.
      c02896ab
    • Ryan Scott's avatar
      Read COMPLETE sets from external packages · 0d2f7330
      Ryan Scott authored
      Currently, `COMPLETE` pragmas are not read from external packages at
      all, which quite limits their usefulness. This extends
      `ExternalPackageState` to include `COMPLETE` sets from other packages,
      and plumbs around the appropriate values to make it work the way you'd
      expect it to.
      
      Fixes #13350.
      
      Test Plan: make test TEST=T13350
      
      Reviewers: rwbarton, mpickering, austin, simonpj, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3257
      0d2f7330
    • Ben Gamari's avatar
      Show: Add ShowS for ", " · 615ded12
      Ben Gamari authored
      This is produced often enough in derived Show instances that it is likely
      worthwhile defining it once.
      615ded12
    • ruperthorlick's avatar
      Changed parser message for RankNTypes (#12811) · 488a9daa
      ruperthorlick authored
      Added a check for whether RankNTypes is enabled
      and changed error message accordingly
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, mpickering
      
      Differential Revision: https://phabricator.haskell.org/D3262
      488a9daa
    • ruperthorlick's avatar
      Add suggestion for PatternSynonyms parse error (fixes #12429) · 4b1f0721
      ruperthorlick authored
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3261
      4b1f0721
    • rwbarton's avatar
      Don't float out expressions that are okay for speculation · 27bf6b68
      rwbarton authored
      It turned out not to be worth the overhead according to nofib
      (+11.62% on fannkuch-redux, +4.3% on k-nucleotide, and some other
      smaller losses, with no significant gains).
      
      Test Plan: validate
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3250
      27bf6b68
    • rwbarton's avatar
      Don't allow orphan COMPLETE pragmas (#13349) · fce3d37c
      rwbarton authored
      We might support them properly in the future, but for now it's simpler
      to disallow them.
      
      Test Plan: validate
      
      Reviewers: mpickering, austin, bgamari, simonpj
      
      Reviewed By: mpickering, simonpj
      
      Subscribers: simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3243
      fce3d37c
    • Edward Z. Yang's avatar
      Print out sub-libraries of packages more nicely. · 0b922909
      Edward Z. Yang authored
      Previously, we would print out the munged package name
      which looked like z-bkpcabal01-z-p-0.1.0.0.  Now
      it looks like: bkpcabal01-0.1.0.0:p.
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      
      Test Plan: validate
      
      Reviewers: simonpj, bgamari, austin
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3235
      0b922909
    • Simon Marlow's avatar
      Add -fwhole-archive-hs-libs · a6874e54
      Simon Marlow authored
      We're building a demo to show how to hot-swap Haskell code in a
      running process, and unfortunately it wasn't possible to convince GHC
      to generate the correct linker command line without this extra knob.
      
      Test Plan:
      Tested it on a hot-swapping demo (which is not released yet, but will
      be shortly)
      
      Reviewers: niteria, austin, erikd, JonCoens, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: Phyx, rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3136
      a6874e54
  4. 02 Mar, 2017 12 commits
  5. 01 Mar, 2017 5 commits
    • David Feuer's avatar
      Upgrade UniqSet to a newtype · cbe569a5
      David Feuer authored
      The fundamental problem with `type UniqSet = UniqFM` is that `UniqSet`
      has a key invariant `UniqFM` does not. For example, `fmap` over
      `UniqSet` will generally produce nonsense.
      
      * Upgrade `UniqSet` from a type synonym to a newtype.
      
      * Remove unused and shady `extendVarSet_C` and `addOneToUniqSet_C`.
      
      * Use cached unique in `tyConsOfType` by replacing
        `unitNameEnv (tyConName tc) tc` with `unitUniqSet tc`.
      
      Reviewers: austin, hvr, goldfire, simonmar, niteria, bgamari
      
      Reviewed By: niteria
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3146
      cbe569a5
    • David Feuer's avatar
      Change catch# demand signature · 701256df
      David Feuer authored
      * Give `catch#` a lazy demand signature, to make it more honest.
      
      * Make `catchException` and `catchAny` force their arguments so they
      actually behave as advertised.
      
      * Use `catch` rather than `catchException` in `forkIO`, `forkOn`, and
      `forkOS` to avoid losing exceptions.
      
      Fixes #13330
      
      Reviewers: rwbarton, simonpj, simonmar, bgamari, hvr, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3244
      701256df
    • Simon Peyton Jones's avatar
      Move isJoinId, isJoinId_maybe to Id · 2ab6ce78
      Simon Peyton Jones authored
      This is just a refactoring, moving these two functions where
      they belong.
      
      The reason they were there was because of the use of isJoinId_maybe
      in the OutputableBndr instance of TaggedBndr, which was in CoreSyn.
      I moved it to PprCore, to join the OutputableBndr instance for
      Var.  That makes more sense anyway.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3207
      2ab6ce78
    • Simon Peyton Jones's avatar
      Mark non-recursive join lambdas as one-shot · 777b7707
      Simon Peyton Jones authored
      When we have
      
        join j x y = rhs in ...
      
      we know that the lambdas for 'x' and 'y' are one-shot.
      Let's mark them as such!
      
      This doesn't fix a specific bug, but it feels right to me.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: lukemaurer, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3196
      777b7707
    • Simon Peyton Jones's avatar
      Improve SetLevels for join points · 6eb52cfc
      Simon Peyton Jones authored
      C.f. Trac #13286, #13236
      
      * Never destroy a join point unless it goes to top level
        See Note [Floating join point bindings]
      
      * Never float a MFE if it has a free join variable
        Note [Free join points]
      
      * Stop treating nullary join points specially
      
      * Enforce the invariant that le_join_ceil >= le_ctxt_lvl
        (Needs more thought...)
      
      Reviewers: austin, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D3199
      6eb52cfc