1. 14 May, 2020 10 commits
  2. 13 May, 2020 12 commits
    • Ivan-Yudin's avatar
      doc: Reformulate the opening paragraph of Ch. 4 in User's guide · 266310c3
      Ivan-Yudin authored
      Removes mentioning of Hugs
      (it is not helpful for new users anymore).
      Changes the wording for the rest of the paragraph.
      Fixes #18132.
    • Ben Gamari's avatar
      testsuite: Add testcase for #18129 · 9e4b981f
      Ben Gamari authored
    • Ben Gamari's avatar
      testsuite: Print sign of performance changes · 5d0f2445
      Ben Gamari authored
      Executes the minor formatting change in the tabulated performance
      changes suggested in #18135.
    • Ben Gamari's avatar
      users-guide: Add discussion of shared object naming · e34bf656
      Ben Gamari authored
      Fixes #18074.
    • Sebastian Graf's avatar
      CprAnal: Don't attach CPR sigs to expandable bindings (#18154) · 86d8ac22
      Sebastian Graf authored
      Instead, look through expandable unfoldings in `cprTransform`.
      See the new Note [CPR for expandable unfoldings]:
      Long static data structures (whether top-level or not) like
        xs = x1 : xs1
        xs1 = x2 : xs2
        xs2 = x3 : xs3
      should not get CPR signatures, because they
        * Never get WW'd, so their CPR signature should be irrelevant after analysis
          (in fact the signature might even be harmful for that reason)
        * Would need to be inlined/expanded to see their constructed product
        * Recording CPR on them blows up interface file sizes and is redundant with
          their unfolding. In case of Nested CPR, this blow-up can be quadratic!
      But we can't just stop giving DataCon application bindings the CPR property,
      for example
        fac 0 = 1
        fac n = n * fac (n-1)
      fac certainly has the CPR property and should be WW'd! But FloatOut will
      transform the first clause to
        lvl = 1
        fac 0 = lvl
      If lvl doesn't have the CPR property, fac won't either. But lvl doesn't have a
      CPR signature to extrapolate into a CPR transformer ('cprTransform'). So
      instead we keep on cprAnal'ing through *expandable* unfoldings for these arity
      0 bindings via 'cprExpandUnfolding_maybe'.
      In practice, GHC generates a lot of (nested) TyCon and KindRep bindings, one
      for each data declaration. It's wasteful to attach CPR signatures to each of
      them (and intractable in case of Nested CPR).
      Fixes #18154.
    • Emeka Nkurumeh's avatar
    • Ben Gamari's avatar
      Add few cleanups of the CAF logic · cb22348f
      Ben Gamari authored
      Give the NameSet of non-CAFfy names a proper newtype to distinguish it
      from all of the other NameSets floating about.
    • Simon Jakobi's avatar
      docs: Add examples for Data.Semigroup.Arg{Min,Max} · 8c0740b7
      Simon Jakobi authored
      Context: #17153
    • Ben Gamari's avatar
    • Ben Gamari's avatar
      get-win32-tarballs: Fix base URL · 670c3e5c
      Ben Gamari authored
      Revert a change previously made for testing purposes.
    • Ömer Sinan Ağacan's avatar
      Pack some of IdInfo fields into a bit field · a03da9bf
      Ömer Sinan Ağacan authored
      This reduces residency of compiler quite a bit on some programs.
      Example stats when building T10370:
         2,871,242,832 bytes allocated in the heap
         4,693,328,008 bytes copied during GC
            33,941,448 bytes maximum residency (276 sample(s))
               375,976 bytes maximum slop
                    83 MiB total memory in use (0 MB lost due to fragmentation)
         2,858,897,344 bytes allocated in the heap
         4,629,255,440 bytes copied during GC
            32,616,624 bytes maximum residency (278 sample(s))
               314,400 bytes maximum slop
                    80 MiB total memory in use (0 MB lost due to fragmentation)
      So -3.9% residency, -1.3% bytes copied and -0.4% allocations.
      Fixes #17497
      Metric Decrease:
    • Ben Gamari's avatar
      rts/CNF: Fix fixup comparison function · cf4f1e2f
      Ben Gamari authored
      Previously we would implicitly convert the difference between two words
      to an int, resulting in an integer overflow on 64-bit machines.
      Fixes #16992
  3. 10 May, 2020 2 commits
  4. 08 May, 2020 16 commits