Skip to content
Snippets Groups Projects
  1. Jul 31, 2020
  2. Jul 30, 2020
  3. Jul 29, 2020
  4. Jul 28, 2020
    • Peter Trommler's avatar
      config: Fix Haskell platform constructor w/ params · f305bbfd
      Peter Trommler authored and Marge Bot's avatar Marge Bot committed
      Fixes #18505
      f305bbfd
    • Sylvain Henry's avatar
      Bignum: add support for negative shifts (fix #18499) · 6ee07b49
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      shiftR/shiftL support negative arguments despite Haskell 2010 report
      saying otherwise. We explicitly test for negative values which is bad
      (it gets in the way of constant folding, etc.). Anyway, for consistency
      we fix Bits instancesof Integer/Natural.
      6ee07b49
    • Simon Peyton Jones's avatar
      This patch addresses the exponential blow-up in the simplifier. · 0bd60059
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      Specifically:
        #13253 exponential inlining
        #10421 ditto
        #18140 strict constructors
        #18282 another nested-function call case
      
      This patch makes one really significant changes: change the way that
      mkDupableCont handles StrictArg.  The details are explained in
      GHC.Core.Opt.Simplify Note [Duplicating StrictArg].
      
      Specific changes
      
      * In mkDupableCont, when making auxiliary bindings for the other arguments
        of a call, add extra plumbing so that we don't forget the demand on them.
        Otherwise we haev to wait for another round of strictness analysis. But
        actually all the info is to hand.  This change affects:
        - Make the strictness list in ArgInfo be [Demand] instead of [Bool],
          and rename it to ai_dmds.
        - Add as_dmd to ValArg
        - Simplify.makeTrivial takes a Demand
        - mkDupableContWithDmds takes a [Demand]
      
      There are a number of other small changes
      
      1. For Ids that are used at most once in each branch of a case, make
         the occurrence analyser record the total number of syntactic
         occurrences.  Previously we recorded just OneBranch or
         MultipleBranches.
      
         I thought this was going to be useful, but I ended up barely
         using it; see Note [Note [Suppress exponential blowup] in
         GHC.Core.Opt.Simplify.Utils
      
         Actual changes:
           * See the occ_n_br field of OneOcc.
           * postInlineUnconditionally
      
      2. I found a small perf buglet in SetLevels; see the new
         function GHC.Core.Opt.SetLevels.hasFreeJoin
      
      3. Remove the sc_cci field of StrictArg.  I found I could get
         its information from the sc_fun field instead.  Less to get
         wrong!
      
      4. In ArgInfo, arrange that ai_dmds and ai_discs have a simpler
         invariant: they line up with the value arguments beyond ai_args
         This allowed a bit of nice refactoring; see isStrictArgInfo,
         lazyArgcontext, strictArgContext
      
      There is virtually no difference in nofib. (The runtime numbers
      are bogus -- I tried a few manually.)
      
              Program           Size    Allocs   Runtime   Elapsed  TotalMem
      --------------------------------------------------------------------------------
                  fft          +0.0%     -2.0%    -48.3%    -49.4%      0.0%
           multiplier          +0.0%     -2.2%    -50.3%    -50.9%      0.0%
      --------------------------------------------------------------------------------
                  Min          -0.4%     -2.2%    -59.2%    -60.4%      0.0%
                  Max          +0.0%     +0.1%     +3.3%     +4.9%      0.0%
       Geometric Mean          +0.0%     -0.0%    -33.2%    -34.3%     -0.0%
      
      Test T18282 is an existing example of these deeply-nested strict calls.
      We get a big decrease in compile time (-85%) because so much less
      inlining takes place.
      
      Metric Decrease:
          T18282
      0bd60059
    • Ben Gamari's avatar
      gitlab-ci: Bump bootstrap compiler to 8.8.4 · 0a815cea
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Hopefully this will make the Windows jobs a bit more reliable.
      0a815cea
    • Ben Gamari's avatar
      gitlab-ci: Ensure that Hadrian jobs don't download artifacts · 57aca6bb
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously the Hadrian jobs had the default dependencies, meaning that
      they would download artifacts from all jobs of earlier stages. This is
      unneccessary.
      57aca6bb
    • Simon Peyton Jones's avatar
      Eta-expand the Simplifier monad · 3d345c96
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      This patch eta-expands the Simplifier's monad, using the method
      explained in GHC.Core.Unify Note [The one-shot state monad trick].
      It's part of the exta-expansion programme in #18202.
      
      It's a tiny patch, but is worth a 1-2% reduction in bytes-allocated
      by the compiler.  Here's the list, based on the compiler-performance
      tests in perf/compiler:
      
                          Reduction in bytes allocated
         T10858(normal)      -0.7%
         T12425(optasm)      -1.3%
         T13056(optasm)      -1.8%
         T14683(normal)      -1.1%
         T15164(normal)      -1.3%
         T15630(normal)      -1.4%
         T17516(normal)      -2.3%
         T18282(normal)      -1.6%
         T18304(normal)      -0.8%
         T1969(normal)       -0.6%
         T4801(normal)       -0.8%
         T5321FD(normal)     -0.7%
         T5321Fun(normal)    -0.5%
         T5642(normal)       -0.9%
         T6048(optasm)       -1.1%
         T9020(optasm)       -2.7%
         T9233(normal)       -0.7%
         T9675(optasm)       -0.5%
         T9961(normal)       -2.9%
         WWRec(normal)       -1.2%
      
      Metric Decrease:
          T12425
          T9020
          T9961
      3d345c96
    • Michalis Pardalos's avatar
      Use allocate, not ALLOC_PRIM_P for unpackClosure# · 47680cb7
      Michalis Pardalos authored and Marge Bot's avatar Marge Bot committed
      ALLOC_PRIM_P fails for large closures, by directly using allocate
      we can handle closures which are larger than the block size.
      
      Fixes #12492
      47680cb7
    • Michalis Pardalos's avatar
      Add minimal test for #12492 · 6da73bbf
      Michalis Pardalos authored and Marge Bot's avatar Marge Bot committed
      6da73bbf
    • Ben Gamari's avatar
      Drop 32-bit Windows support · aa054d32
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      As noted in #18487, we have reached the end of this road.
      aa054d32
Loading