Skip to content
Snippets Groups Projects
  1. Dec 14, 2020
  2. Dec 13, 2020
  3. Dec 12, 2020
  4. Dec 11, 2020
  5. Dec 10, 2020
  6. Dec 09, 2020
    • Andreas Klebinger's avatar
      Bump time submodule. · 54b88eac
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      This should fix #19002.
      54b88eac
    • Andreas Klebinger's avatar
      GHC.Cmm.Opt: Be stricter in results. · 59f2249b
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Optimization either returns Nothing if nothing is to be done or
      `Just <cmmExpr>` otherwise. There is no point in being lazy in
      `cmmExpr`. We usually inspect this element so the thunk gets forced
      not long after.
      
      We might eliminate it as dead code once in a blue moon but that's
      not a case worth optimizing for.
      
      Overall the impact of this is rather low. As Cmm.Opt doesn't allocate
      much (compared to the rest of GHC) to begin with.
      59f2249b
    • Andreas Klebinger's avatar
      Cmm.Sink: Optimize retaining of assignments, live sets. · aef44d7f
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Sinking requires us to track live local regs after each
      cmm statement. We used to do this via "Set LocalReg".
      
      However we can replace this with a solution based on IntSet
      which is overall more efficient without losing much. The thing
      we lose is width of the variables, which isn't used by the sinking
      pass anyway.
      
      I also reworked how we keep assignments to regs mentioned in
      skipped assignments. I put the details into
      Note [Keeping assignemnts mentioned in skipped RHSs].
      
      The gist of it is instead of keeping track of it via the use count
      which is a `IntMap Int` we now use the live regs set (IntSet) which
      is quite a bit faster.
      
      I think it also matches the semantics a lot better. The skipped
      (not discarded) assignment does in fact keep the regs on it's rhs
      alive so keeping track of this in the live set seems like the clearer
      solution as well.
      
      Improves allocations for T3294 by yet another 1%.
      aef44d7f
    • Andreas Klebinger's avatar
      Cmm: Make a few types and utility function slightly stricter. · 6e3da800
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      About 0.6% reduction in allocations for the code I was looking at.
      
      Not a huge difference but no need to throw away performance.
      6e3da800
    • Andreas Klebinger's avatar
      CmmSink: Force inlining of foldRegsDefd · 69ae10c3
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Helps avoid allocating the folding function. Improves
      perf for T3294 by about 1%.
      69ae10c3
    • Andreas Klebinger's avatar
      CodeGen: Make folds User/DefinerOfRegs INLINEABLE. · 51e3bb6d
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Reduces allocation for the test case I was looking at by about 1.2%.
      Mostly from avoiding allocation of some folding functions which turn
      into let-no-escape bindings which just reuse their environment instead.
      
      We also force inlining in a few key places in CmmSink which helps a bit
      more.
      51e3bb6d
  7. Dec 08, 2020
    • adam's avatar
      hadrian: build the _l and _thr_l rts flavours in the develN flavours · 0abe3ddf
      adam authored and Marge Bot's avatar Marge Bot committed
      The ghc binary requires the eventlog rts since
      fc644b1a
      0abe3ddf
    • Simon Peyton Jones's avatar
      Fix kind inference for data types. Again. · 62ed6957
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      This patch fixes several aspects of kind inference for data type
      declarations, especially data /instance/ declarations
      
      Specifically
      
      1. In kcConDecls/kcConDecl make it clear that the tc_res_kind argument
         is only used in the H98 case; and in that case there is no result
         kind signature; and hence no need for the disgusting splitPiTys in
         kcConDecls (now thankfully gone).
      
         The GADT case is a bit different to before, and much nicer.
         This is what fixes #18891.
      
         See Note [kcConDecls: kind-checking data type decls]
      
      2. Do not look at the constructor decls of a data/newtype instance
         in tcDataFamInstanceHeader. See GHC.Tc.TyCl.Instance
         Note [Kind inference for data family instances].  This was a
         new realisation that arose when doing (1)
      
         This causes a few knock-on effects in the tests suite, because
         we require more information than before in the instance /header/.
      
         New user-manual material about this in "Kind inference in data type
         declarations" and "Kind inference for data/newtype instance
         declarations".
      
      3. Minor improvement in kcTyClDecl, combining GADT and H98 cases
      
      4. Fix #14111 and #8707 by allowing the header of a data instance
         to affect kind inferece for the the data constructor signatures;
         as described at length in Note [GADT return types] in GHC.Tc.TyCl
      
         This led to a modest refactoring of the arguments (and argument
         order) of tcConDecl/tcConDecls.
      
      5. Fix #19000 by inverting the sense of the test in new_locs
         in GHC.Tc.Solver.Canonical.canDecomposableTyConAppOK.
      62ed6957
  8. Dec 05, 2020
  9. Dec 04, 2020
  10. Dec 03, 2020
  11. Dec 02, 2020
Loading