Skip to content
Snippets Groups Projects
  1. Apr 09, 2022
    • Joachim Breitner's avatar
      Drop the app invariant · dcf30da8
      Joachim Breitner authored and Marge Bot's avatar Marge Bot committed
      
      previously, GHC had the "let/app-invariant" which said that the RHS of a
      let or the argument of an application must be of lifted type or ok for
      speculation. We want this on let to freely float them around, and we
      wanted that on app to freely convert between the two (e.g. in
      beta-reduction or inlining).
      
      However, the app invariant meant that simple code didn't stay simple and
      this got in the way of rules matching. By removing the app invariant,
      this thus fixes #20554.
      
      The new invariant is now called "let-can-float invariant", which is
      hopefully easier to guess its meaning correctly.
      
      Dropping the app invariant means that everywhere where we effectively do
      beta-reduction (in the two simplifiers, but also in `exprIsConApp_maybe`
      and other innocent looking places) we now have to check if the argument
      must be evaluated (unlifted and side-effecting), and analyses have to be
      adjusted to the new semantics of `App`.
      
      Also, `LetFloats` in the simplifier can now also carry such non-floating
      bindings.
      
      The fix for DmdAnal, refine by Sebastian, makes functions with unlifted
      arguments strict in these arguments, which changes some signatures.
      
      This causes some extra calls to `exprType` and `exprOkForSpeculation`,
      so some perf benchmarks regress a bit (while others improve).
      
      Metric Decrease:
          T9020
      Metric Increase:
          LargeRecord
          T12545
          T15164
          T16577
          T18223
          T5642
          T9961
      
      Co-authored-by: default avatarSebastian Graf <sebastian.graf@kit.edu>
      ghc-9.5-start
      dcf30da8
    • Matthew Pickering's avatar
      Bump deepseq to 1.4.7.0 · 27362265
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      Updates deepseq submodule
      
      Fixes #20653
      27362265
    • Matthew Pickering's avatar
      ci: Remove doc-tarball dependency from perf and perf-nofib jobs · 3c48e12a
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      These don't depend on the contents of the tarball so we can run them
      straight after the fedora33 job finishes.
      3c48e12a
    • Matthew Pickering's avatar
      ci: Fix nightly head.hackage pipelines · 4bb00839
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      This also needs a corresponding commit to head.hackage, I also made the
      job explicitly depend on the fedora33 job so that it isn't blocked by a
      failing windows job, which causes docs-tarball to fail.
      4bb00839
  2. Apr 08, 2022
    • Simon Peyton Jones's avatar
      Tiny documentation wibble · e58d5eeb
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      This commit
         commit 83363c8b
         Author: Simon Peyton Jones <simon.peytonjones@gmail.com>
         Date:   Fri Mar 11 16:55:38 2022 +0000
      
             Use prepareBinding in tryCastWorkerWrapper
      
      refactored completeNonRecX away, but left a Note referring to it.
      This MR fixes that Note.
      e58d5eeb
    • Vladislav Zavialov's avatar
      Disallow (->) as a data constructor name (#16999) · 0736e949
      Vladislav Zavialov authored and Marge Bot's avatar Marge Bot committed
      The code was misusing isLexCon, which was never meant for validation.
      In fact, its documentation states the following:
      
      	Use these functions to figure what kind of name a 'FastString'
      	represents; these functions do /not/ check that the identifier
      	is valid.
      
      Ha! This sign can't stop me because I can't read.
      
      The fix is to use okConOcc instead. The other checks (isTcOcc or
      isDataOcc) seem superfluous, so I also removed those.
      0736e949
    • Matthew Pickering's avatar
      ci: Replace "always" with "on_success" to stop build jobs running before hadrian-ghci has finished · d4480490
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      See https://docs.gitlab.com/ee/ci/yaml/#when
      
      * always means, always run not matter what
      * on_success means, run if the dependencies have built successfully
      d4480490
    • sheaf's avatar
      Docs: datacon eta-expansion, rep-poly checks · 23f95735
      sheaf authored and Marge Bot's avatar Marge Bot committed
      The existing notes weren't very clear on how the eta-expansion of
      data constructors that occurs in tcInferDataCon/dsConLike interacts
      with the representation polymorphism invariants. So we explain with
      a few more details how we ensure that the representation-polymorphic
      lambdas introduced by tcInferDataCon/dsConLike don't end up causing
      problems, by checking they are properly instantiated and then relying
      on the simple optimiser to perform beta reduction.
      
      A few additional changes:
      
        - ConLikeTc just take type variables instead of binders, as we
          never actually used the binders.
        - Removed the FRRApp constructor of FRROrigin; it was no longer used
          now that we use ExpectedFunTyOrigin.
        - Adds a bit of documentation to the constructors
          of ExpectedFunTyOrigin.
      23f95735
    • Vladislav Zavialov's avatar
      HsUniToken for :: in GADT constructors (#19623) · 3415981c
      Vladislav Zavialov authored and Marge Bot's avatar Marge Bot committed
      One more step towards the new design of EPA.
      
      Updates the haddock submodule.
      3415981c
    • Andreas Klebinger's avatar
      Add flag -fprof-manual which controls if GHC should honour manual cost centres. · 85f4a3c9
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      This allows disabling of manual control centres in code a user doesn't control like
      libraries.
      
      Fixes #18867
      85f4a3c9
    • Matthew Pickering's avatar
      driver: Introduce HomeModInfoCache abstraction · 6e2c3b7c
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      The HomeModInfoCache is a mutable cache which is updated incrementally
      as the driver completes, this makes it robust to exceptions including
      (SIGINT)
      
      The interface for the cache is described by the `HomeMOdInfoCache` data
      type:
      
      ```
      data HomeModInfoCache = HomeModInfoCache { hmi_clearCache :: IO [HomeModInfo]
                                               , hmi_addToCache :: HomeModInfo -> IO () }
      ```
      
      The first operation clears the cache and returns its contents. This is
      designed so it's harder to end up in situations where the cache is
      retained throughout the execution of upsweep.
      
      The second operation allows a module to be added to the cache.
      
      The one slightly nasty part is in `interpretBuildPlan` where we have to
      be careful to ensure that the cache writes happen:
      
      1. In parralel
      2. Before the executation continues after upsweep.
      
      This requires some simple, localised MVar wrangling.
      
      Fixes #20780
      6e2c3b7c
    • Ben Gamari's avatar
      Merge remote-tracking branch 'origin/master' · 56254e6b
      Ben Gamari authored
      56254e6b
    • Vladislav Zavialov's avatar
      Reject illegal quote mark in data con declarations (#17865) · af300a43
      Vladislav Zavialov authored and Marge Bot's avatar Marge Bot committed
      * Non-fatal (i.e. recoverable) parse error
      * Checking infix constructors
      * Extended the regression test
      af300a43
    • sheaf's avatar
      Correctly report SrcLoc of redundant constraints · 777365f1
      sheaf authored and Marge Bot's avatar Marge Bot committed
      We were accidentally dropping the source location information in
      certain circumstances when reporting redundant constraints. This patch
      makes sure that we set the TcLclEnv correctly before reporting the
      warning.
      
      Fixes #21315
      777365f1
    • Krzysztof Gogolewski's avatar
      Fixes to 9.4 release notes · c44432db
      Krzysztof Gogolewski authored and Marge Bot's avatar Marge Bot committed
      - Mention -Wforall-identifier
      - Improve description of withDict
      - Fix formatting
      c44432db
    • Ben Gamari's avatar
      testsuite: Lint RTS #includes · cb1f31f5
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Verifies two important properties of #includes in the RTS:
      
       * That system headers don't appear inside of a `<BeginPrivate.h>` block
         as this can hide system library symbols, resulting in very
         hard-to-diagnose linker errors
      
       * That no headers precede `Rts.h`, ensuring that __USE_MINGW_ANSI_STDIO
         is set correctly before system headers are included.
      cb1f31f5
    • Ben Gamari's avatar
      rts: Fix various #include issues · 56f85d62
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      This fixes various violations of the newly-added RTS includes linter.
      56f85d62
    • Ben Gamari's avatar
      rts: Move __USE_MINGW_ANSI_STDIO definition to PosixSource.h · c32c4db6
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      It's easier to ensure that this is included first than Rts.h
      c32c4db6
    • sheaf's avatar
      Add test for #21338 · 64ac20a7
      sheaf authored and Marge Bot's avatar Marge Bot committed
      This no-skolem-info bug was fixed by the no-skolem-info patch
      that will be part of GHC 9.4. This patch adds a regression test for
      the issue reported in issue #21338.
      
      Fixes #21338.
      64ac20a7
    • Simon Jakobi's avatar
      Improve seq[D]VarSet · b2dbcc7d
      Simon Jakobi authored and Marge Bot's avatar Marge Bot committed
      Previously, the use of size[D]VarSet would involve a traversal of the
      entire underlying IntMap. Since IntMaps are already spine-strict,
      this is unnecessary.
      b2dbcc7d
  3. Apr 07, 2022
Loading