1. 21 Aug, 2018 14 commits
    • Alec Theriault's avatar
      Explicitly tell 'getNameToInstances' mods to load · c971e119
      Alec Theriault authored
      Calculating which modules to load based on the InteractiveContext means
      maintaining a potentially very large GblRdrEnv.
      In Haddock's case, it is much cheaper (from a memory perspective) to
      just keep track of which modules interfaces we want loaded then hand
      these off explicitly to 'getNameToInstancesIndex'.
      Bumps haddock submodule.
      Reviewers: alexbiehl, bgamari
      Reviewed By: alexbiehl
      Subscribers: rwbarton, thomie, carter
      Differential Revision: https://phabricator.haskell.org/D5003
    • Ben Gamari's avatar
    • Simon Peyton Jones's avatar
      Simplify callSiteInline a little · 8a05836a
      Simon Peyton Jones authored
      This patch has virtually no effect on anything (according to a
      nofib run).  But it simplifies the definition of interesting_call
      by being a bit less gung-ho about inlining nested function
      bindings.  See Note [Nested functions]
              Program           Size    Allocs   Runtime   Elapsed  TotalMem
                 anna          +0.2%     -0.0%     0.163     0.163      0.0%
         binary-trees          +0.1%     +0.0%     -4.5%     -4.5%      0.0%
            cacheprof          -0.1%     +0.1%     -4.7%     -4.8%     +2.7%
                fasta          +0.2%      0.0%     +2.6%     +3.0%      0.0%
                fluid          -0.0%     -0.6%     0.011     0.011      0.0%
               gamteb          -0.1%     -0.0%     0.069     0.070      0.0%
                  hpg          +0.1%     +0.0%     +0.7%     +0.7%      0.0%
                infer          +0.3%     +0.2%     0.097     0.098      0.0%
               lambda          -0.1%     -0.0%     +2.0%     +2.0%      0.0%
               n-body          +0.1%     -0.1%     -0.1%     -0.1%      0.0%
               simple          -0.2%     -0.2%     +0.6%     +0.6%      0.0%
        spectral-norm          +0.1%     -0.0%     -0.1%     -0.1%      0.0%
                  tak          -0.0%     -0.1%     0.024     0.024      0.0%
                  Min          -0.4%     -0.6%     -5.3%     -5.3%      0.0%
                  Max          +0.3%     +0.2%     +3.3%     +3.3%    +15.0%
       Geometric Mean          -0.0%     -0.0%     -0.3%     -0.3%     +0.2%
      (cherry picked from commit 33de71fa)
      (This reverts the previous reversion in commit
    • Roland Senn's avatar
      Introduce flag -keep-hscpp-files · ebcbfba7
      Roland Senn authored
      Test Plan: `make test=T10869`
      Reviewers: mpickering, thomie, ezyang, bgamari
      Reviewed By: thomie, bgamari
      Subscribers: rwbarton, carter
      GHC Trac Issues: #10869
      Differential Revision: https://phabricator.haskell.org/D4861
    • Tamar Christina's avatar
      function-section: enable on windows · 23774c98
      Tamar Christina authored
      gc-sections was onced observed to be slow on Windows, which is the only
      reason it's not enabled yet.  However, it seems to be better now.
      Test Plan: ./validate
      Reviewers: bgamari
      Reviewed By: bgamari
      Subscribers: rwbarton, thomie, carter
      GHC Trac Issues: #15051
      Differential Revision: https://phabricator.haskell.org/D4916
    • Andreas Klebinger's avatar
      Replace most occurences of foldl with foldl'. · 09c1d5af
      Andreas Klebinger authored
      This patch adds foldl' to GhcPrelude and changes must occurences
      of foldl to foldl'. This leads to better performance especially
      for quick builds where GHC does not perform strictness analysis.
      It does change strictness behaviour when we use foldl' to turn
      a argument list into function applications. But this is only a
      drawback if code looks ONLY at the last argument but not at the first.
      And as the benchmarks show leads to fewer allocations in practice
      at O2.
      Compiler performance for Nofib:
      O2 Allocations:
              -1 s.d.                -----            -0.0%
              +1 s.d.                -----            -0.0%
              Average                -----            -0.0%
      O2 Compile Time:
              -1 s.d.                -----            -2.8%
              +1 s.d.                -----            +1.3%
              Average                -----            -0.8%
      O0 Allocations:
              -1 s.d.                -----            -0.2%
              +1 s.d.                -----            -0.1%
              Average                -----            -0.2%
      Test Plan: ci
      Reviewers: goldfire, bgamari, simonmar, tdammers, monoidal
      Reviewed By: bgamari, monoidal
      Subscribers: tdammers, rwbarton, thomie, carter
      Differential Revision: https://phabricator.haskell.org/D4929
    • Ben Sklaroff's avatar
      Fix #line pragmas in nested comments · 02518f9d
      Ben Sklaroff authored
      When parsing a nested comment or nested doc comment in the lexer, if we
      see a line starting with '#' we attempt to parse a #line pragma. This
      fixes how ghc handles output of the C preproccesor (-cpp flag) when the
      original source has C comments or pragmas inside haskell comments.
      Updates haddock submodule.
      Test Plan: ./validate
      Reviewers: bgamari
      Reviewed By: bgamari
      Subscribers: rwbarton, thomie, carter
      GHC Trac Issues: #314
      Differential Revision: https://phabricator.haskell.org/D4934
    • Ben Gamari's avatar
      Fix redundant imports of Class · 966aa781
      Ben Gamari authored
    • Sergei Trofimovich's avatar
      driver: unconditionally disable relaxation when linking partially · 1cc9061f
      Sergei Trofimovich authored
      In https://github.com/gentoo-haskell/gentoo-haskell/issues/704
      user explicitly uses -Wl,--relax for most built binaries.
      Most of the time this works fine except for capi haskell code
      similar to the following:
      {-# LANGUAGE CApiFFI #-}
      module Z where
      import Foreign.C
      foreign import capi "unistd.h close" c_close :: CInt -> IO CInt
      In this case compilation fails as:
      $ inplace/bin/ghc-stage2 -c Z.hs -optl-Wl,--relax -fforce-recomp
      ld: --relax and -r may not be used together
      GHC's driver already disables relaxation on sparc as there relaxation
      is already a default mode.
      This change disables relaxation on partial linking for all platforms
      where linker is binutils linker.
      Reported-by: wmyrda
      Bug: https://github.com/gentoo-haskell/gentoo-haskell/issues/704Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      Test Plan: pass -optl-Wl,--relax in test above
      Reviewers: bgamari
      Reviewed By: bgamari
      Subscribers: rwbarton, thomie, carter
      Differential Revision: https://phabricator.haskell.org/D4888
    • Simon Peyton Jones's avatar
      Add a solveEqualities to tcClassDecl1 · 43b08cfb
      Simon Peyton Jones authored
      Trac #15505 showed that, when we have a type error, we
      could have an unfilled-in coercion hole.  We don't want an
      assertion error in that case.
      The underlying cause is that tcClassDecl1 should call
      solveEqualities to fully solve all top-level equalities
      (or fail in the attempt).
      I also refactored the ClassDecl case for tcTyClDecl1 into
      a new function tcClassDecl1.  That makes it symmetrical
      with the others.
    • Simon Peyton Jones's avatar
      Comments only · 828e9493
      Simon Peyton Jones authored
    • Simon Peyton Jones's avatar
      Improve ambiguous-occurrence error message · 18c302cb
      Simon Peyton Jones authored
      Trac #15487 correctly reported that the qualification
      of a Name in an ambiguous-occurrence error message was
      wrong.  This patch fixes it.
      It's easily done, in RnUtils.addNameClashErrRn
      The problem was that in complaining about M.x we must
      enusre that 'M' part is the same as that used in
    • Simon Peyton Jones's avatar
      Set strictness correctly for JoinIds · ce6ce788
      Simon Peyton Jones authored
      We were failing to keep correct strictness info when eta-expanding
      join points; Trac #15517.   The situation was something like
        \q v eta ->
           let j x = error "blah
               -- STR Lx   bottoming!
           in case y of
                 A -> j x eta
                 B -> blah
                 C -> j x eta
      So we spot j as a join point and eta-expand it.  But we must
      also adjust the stricness info, else it vlaimes to bottom after
      one arg is applied but now it has become two.
      I fixed this in two places:
       - In CoreOpt.joinPointBinding_maybe, adjust strictness info
       - In SimplUtils.tryEtaExpandRhs, return consistent values
         for arity and bottom-ness
    • David Feuer's avatar
      Expose the StableName constructor · 9c4e6c6b
      David Feuer authored
      * Move the definition of `StableName` from `System.Mem.StableName`
        to a new `GHC.StableName` module.
      * Expose the `StableName` data constructor from `GHC.StableName`.
        Once we have `UnliftedArray#`, this will enable `StableName`s to
        be stored in `UnliftedArray`s (from `primitive`) without unsafe
      Reviewers: hvr, bgamari, andrewthad, osa1
      Reviewed By: osa1
      Subscribers: osa1, rwbarton, carter
      GHC Trac Issues: #15535
      Differential Revision: https://phabricator.haskell.org/D5078
  2. 20 Aug, 2018 3 commits
  3. 18 Aug, 2018 1 commit
  4. 17 Aug, 2018 8 commits
  5. 16 Aug, 2018 2 commits
  6. 15 Aug, 2018 3 commits
  7. 14 Aug, 2018 1 commit
    • Ryan Scott's avatar
      Properly designate LambdaCase alts as CaseAlt in TH · 32008a9d
      Ryan Scott authored
      When `\case` expressions are parsed normally, their
      alternatives are marked as `CaseAlt` (which means that they are
      pretty-printed without a `\` character in front of them, unlike for
      lambda expressions). However, `\case` expressions created by way of
      Template Haskell (in `Convert`) inconsistently designated the case
      alternatives as `LambdaExpr`, causing them to be pretty-printed
      poorly (as shown in #15518). The fix is simple: use `CaseAlt`
      Test Plan: make test TEST=T15518
      Reviewers: goldfire, bgamari
      Subscribers: rwbarton, carter
      GHC Trac Issues: #15518
      Differential Revision: https://phabricator.haskell.org/D5069
  8. 13 Aug, 2018 1 commit
  9. 12 Aug, 2018 6 commits
  10. 11 Aug, 2018 1 commit
    • Krzysztof Gogolewski's avatar
      Simplify testsuite driver · f27d7145
      Krzysztof Gogolewski authored
      - remove clean_cmd
      - framework_failures was undefined
      - times_file was not used
      - if_verbose_dump was called only when verbose >= 1; remove the check
      - simplify normalise_whitespace
      Test Plan: validate
      Reviewers: bgamari, thomie
      Reviewed By: thomie
      Subscribers: rwbarton, carter
      Differential Revision: https://phabricator.haskell.org/D5061