This project is mirrored from Pull mirroring updated .
  1. 25 May, 2022 6 commits
  2. 24 May, 2022 7 commits
  3. 23 May, 2022 4 commits
    • John Ericson's avatar
      Make debug a `Bool` not an `Int` in `StgToCmmConfig` · 1a4195b0
      John Ericson authored and  Marge Bot's avatar Marge Bot committed
      We don't need any more resolution than this.
      Rename the field to `stgToCmmEmitDebugInfo` to indicate it is no longer
      conveying any "level" information.
    • Simon Peyton Jones's avatar
      Improve FloatOut and SpecConstr · bc723ac2
      Simon Peyton Jones authored
      This patch addresses a relatively obscure situation that arose
      when chasing perf regressions in !7847, which itself is fixing
      It does two things:
      * SpecConstr can specialise on ($df d1 d2) dictionary arguments
      * FloatOut no longer checks argument strictness
      See Note [Specialising on dictionaries] in GHC.Core.Opt.SpecConstr.
      A test case is difficult to construct, but it makes a big difference
      in nofib/real/eff/VSM, at least when we have the patch for #21286
      installed. (The latter stops worker/wrapper for dictionary arguments).
      There is a spectacular, but slightly illusory, improvement in
      runtime perf on T15426.  I have documented the specifics in
      T15426 itself.
      Metric Decrease:
    • Dominik Peteler's avatar
      Modularize GHC.Core.Opt.LiberateCase · ffbe28e5
      Dominik Peteler authored and  Marge Bot's avatar Marge Bot committed
      Progress towards #17957
    • Matthew Pickering's avatar
      Consider the stage of typeable evidence when checking stage restriction · ea895b94
      Matthew Pickering authored and  Marge Bot's avatar Marge Bot committed
      We were considering all Typeable evidence to be "BuiltinInstance"s which
      meant the stage restriction was going unchecked. In-fact, typeable has
      evidence and so we need to apply the stage restriction.
      This is
      complicated by the fact we don't generate typeable evidence and the
      corresponding DFunIds until after typechecking is concluded so we
      introcue a new `InstanceWhat` constructor, BuiltinTypeableInstance which
      records whether the evidence is going to be local or not.
      Fixes #21547
  4. 21 May, 2022 3 commits
  5. 20 May, 2022 8 commits
  6. 19 May, 2022 8 commits
  7. 18 May, 2022 2 commits
    • Andreas Klebinger's avatar
      Give all EXTERN_INLINE closure macros prototypes · 828fbd8a
      Andreas Klebinger authored and  Marge Bot's avatar Marge Bot committed
    • Sylvain Henry's avatar
      Don't store LlvmConfig into DynFlags · ef3c8d9e
      Sylvain Henry authored and  Marge Bot's avatar Marge Bot committed
      LlvmConfig contains information read from llvm-passes and llvm-targets
      files in GHC's top directory. Reading these files is done only when
      needed (i.e. when the LLVM backend is used) and cached for the whole
      compiler session. This patch changes the way this is done:
      - Split LlvmConfig into LlvmConfig and LlvmConfigCache
      - Store LlvmConfigCache in HscEnv instead of DynFlags: there is no
        good reason to store it in DynFlags. As it is fixed per session, we
        store it in the session state instead (HscEnv).
      - Initializing LlvmConfigCache required some changes to driver functions
        such as newHscEnv. I've used the opportunity to untangle initHscEnv
        from initGhcMonad (in top-level GHC module) and to move it to
        GHC.Driver.Main, close to newHscEnv.
      - I've also made `cmmPipeline` independent of HscEnv in order to remove
        the call to newHscEnv in regalloc_unit_tests.
  8. 17 May, 2022 2 commits
    • Matthew Pickering's avatar
      Add test for #21558 · 0e2d16eb
      Matthew Pickering authored and  Marge Bot's avatar Marge Bot committed
      This is now fixed on master and 9.2 branch.
      Closes #21558
    • Ben Gamari's avatar
      codeGen: Ensure that static datacon apps are included in SRTs · b048a9f4
      Ben Gamari authored and  Marge Bot's avatar Marge Bot committed
      When generating an SRT for a recursive group, GHC.Cmm.Info.Build.oneSRT
      filters out recursive references, as described in Note [recursive SRTs].
      However, doing so for static functions would be unsound, for the reason
      described in Note [Invalid optimisation: shortcutting].
      However, the same argument applies to static data constructor
      applications, as we discovered in #20959. Fix this by ensuring that
      static data constructor applications are included in recursive SRTs.
      The approach here is not entirely satisfactory, but it is a starting
      Fixes #20959.