1. 09 Oct, 2020 12 commits
    • Alan Zimmerman's avatar
      ApiAnnotations : preserve parens in GADTs · 36787bba
      Alan Zimmerman authored
      A cleanup in 7f418acf61e accidentally discarded some parens in
      Make sure these stay in the AST in a usable format.
      Also ensure the AnnLolly does not get lost in a GADT.
    • Sylvain Henry's avatar
      Bignum: match on small Integer/Natural · 12191a99
      Sylvain Henry authored
      Previously we only matched on *variables* whose unfoldings were a ConApp
      of the form `IS lit#` or `NS lit##`. But we forgot to match on the
      ConApp directly... As a consequence, constant folding only worked after
      the FloatOut pass which creates bindings for most sub-expressions. With
      this patch, matching on bignums works even with -O0 (see bignumMatch
    • Sylvain Henry's avatar
      Hadrian: add quick-debug flavour · e691a5a0
      Sylvain Henry authored
    • Andreas Klebinger's avatar
      testsuite/timeout: Fix windows specific errors. · ef65b154
      Andreas Klebinger authored
      We now seem to use -Werror there. Which caused some long standing
      warnings to become errors.
      I applied changes to remove the warnings allowing the testsuite to
      run on windows as well.
    • Andreas Klebinger's avatar
      Use proper RTS flags when collecting residency in perf tests. · 45a1d493
      Andreas Klebinger authored
      Replace options like collect_stats(['peak_megabytes_allocated'],4) with
      collect_runtime_residency(4) and so forth. Reason being that the later
      also supplies some default RTS arguments which make sure residency does
      not fluctuate too much.
      The new flags mean we get new (hopefully more accurate) baselines so
      accept the stat changes.
      Metric Decrease:
      Metric Increase:
    • Hécate Moonlight's avatar
      Add linting of `base` to the CI · f7e2fff9
      Hécate Moonlight authored
    • Krzysztof Gogolewski's avatar
      Add a flag to indicate that gcc supports -no-pie · e48cab2a
      Krzysztof Gogolewski authored
      Fixes #17919.
    • MaxGabriel's avatar
      Document -Wderiving-typeable · d360f343
      MaxGabriel authored
      Tracking: #18641
    • Sylvain Henry's avatar
      Expose RTS-only ways (#18651) · accdb24a
      Sylvain Henry authored
      Some RTS ways are exposed via settings (ghcThreaded, ghcDebugged) but
      not all. It's simpler if the RTS exposes them all itself.
    • Tamar Christina's avatar
      rts: fix race condition in StgCRun · fd984d68
      Tamar Christina authored
      On windows the stack has to be allocated 4k at a time, otherwise we get
      a segfault. This is done by using a helper ___chkstk_ms that is provided
      by libgcc. The Haskell side already knows how to handle this but we need
      to do the same from STG. Previously we would drop the stack in StgRun
      but would only make it valid whenever the scheduler loop ran.
      This approach was fundamentally broken in that it falls apart when you
      take a signal from the OS. We see it less often because you initially
      get allocated a 1MB stack block which you have to blow past first.
      Concretely this means we must always keep the stack valid.
      Fixes #18601.
    • Simon Jakobi's avatar
      Update containers to v0.6.4.1 · a566c83d
      Simon Jakobi authored
      Updates containers submodule.
    • Sylvain Henry's avatar
      Use UnitId in the backend instead of Unit · 386c2d7f
      Sylvain Henry authored
      In Cmm we can only have real units identified with an UnitId.  Other
      units (on-the-fly instantiated units and holes) are only used in
      type-checking backpack sessions that don't produce Cmm.
  2. 07 Oct, 2020 9 commits
  3. 05 Oct, 2020 3 commits
    • Ben Gamari's avatar
      rts: Fix integer width in TICK_BUMP_BY · 18a3ddf7
      Ben Gamari authored
      Previously `TICK_BUMP_BY` was defined as
       #define TICK_BUMP_BY(ctr,n) CLong[ctr] = CLong[ctr] + n
      Yet the tickers themselves were defined as `StgInt`s. This happened to
      work out correctly on Linux, where `CLong` is 64-bits. However, it
      failed on Windows, where `CLong` is 32-bits, resulting in #18782.
      Fixes #18783.
    • Krzysztof Gogolewski's avatar
    • Sebastian Graf's avatar
      Inline `integerDecodeDouble#` and constant-fold `decodeDouble_Int64#` instead · bc5de347
      Sebastian Graf authored
      Currently, `integerDecodeDouble#` is known-key so that it can be
      recognised in constant folding. But that is very brittle and doesn't
      survive worker/wrapper, which we even do for
      `NOINLINE` things since #13143.
      Also it is a trade-off: The implementation of `integerDecodeDouble#`
      allocates an `Integer` box that never cancels aways if we don't inline
      Hence we recognise the `decodeDouble_Int64#` primop instead in constant
      folding, so that we can inline `integerDecodeDouble#`. As a result,
      `integerDecodeDouble#` no longer needs to be known-key.
      While doing so, I realised that we don't constant-fold
      `decodeFloat_Int#` either, so I also added a RULE for it.
      `integerDecodeDouble` is dead, so I deleted it.
      Part of #18092. This improves the 32-bit `realToFrac`/`toRational`:
      Metric Decrease:
  4. 03 Oct, 2020 2 commits
  5. 02 Oct, 2020 6 commits
  6. 01 Oct, 2020 8 commits