[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 9 commits: Export indexError from GHC.Ix (#18579)

Marge Bot gitlab at gitlab.haskell.org
Thu Nov 19 20:48:29 UTC 2020



 Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC


Commits:
a44710b3 by Krzysztof Gogolewski at 2020-11-19T15:48:14-05:00
Export indexError from GHC.Ix (#18579)

- - - - -
79de421d by Kamil Dworakowski at 2020-11-19T15:48:16-05:00
Clarify interruptible FFI wrt masking state

- - - - -
0d59d487 by Sebastian Graf at 2020-11-19T15:48:17-05:00
Fix strictness signatures of `prefetchValue*#` primops

Their strictness signatures said the primops are strict in their first
argument, which is wrong: Handing it a thunk will prefetch the pointer
to the thunk, but not evaluate it. Hence not strict.

The regression test `T8256` actually tests for laziness in the first
argument, so GHC apparently never exploited the strictness signature.

See also https://gitlab.haskell.org/ghc/ghc/-/issues/8256#note_310867,
where this came up.

- - - - -
4f25115a by Sebastian Graf at 2020-11-19T15:48:17-05:00
Demand: Interleave usage and strictness demands (#18903)

As outlined in #18903, interleaving usage and strictness demands not
only means a more compact demand representation, but also allows us to
express demands that we weren't easily able to express before.

Call demands are *relative* in the sense that a call demand `Cn(cd)`
on `g` says "`g` is called `n` times. *Whenever `g` is called*, the
result is used according to `cd`". Example from #18903:

```hs
h :: Int -> Int
h m =
  let g :: Int -> (Int,Int)
      g 1 = (m, 0)
      g n = (2 * n, 2 `div` n)
      {-# NOINLINE g #-}
  in case m of
    1 -> 0
    2 -> snd (g m)
    _ -> uncurry (+) (g m)
```

Without the interleaved representation, we would just get `L` for the
strictness demand on `g`. Now we are able to express that whenever
`g` is called, its second component is used strictly in denoting `g`
by `1C1(P(1P(U),SP(U)))`. This would allow Nested CPR to unbox the
division, for example.

Fixes #18903.
While fixing regressions, I also discovered and fixed #18957.

Metric Decrease:
    T13253-spj

- - - - -
50ef31e8 by Sebastian Graf at 2020-11-19T15:48:17-05:00
Update user's guide entry on demand analysis and worker/wrapper

The demand signature notation has been undocumented for a long time.
The only source to understand it, apart from reading the `Outputable`
instance, has been an outdated wiki page.

Since the previous commits have reworked the demand lattice, I took
it as an opportunity to also write some documentation about notation.

- - - - -
c231694d by Greg Steuck at 2020-11-19T15:48:19-05:00
Find hadrian location more reliably in cabal-install output

Fix #18944

- - - - -
8d15de18 by Ben Gamari at 2020-11-19T15:48:19-05:00
rts/linker: Align bssSize to page size when mapping symbol extras

We place symbol_extras right after bss. We also need
to ensure that symbol_extras can be mprotect'd independently from the
rest of the image. To ensure this we round up the size of bss to a page
boundary, thus ensuring that symbol_extras is also page-aligned.

- - - - -
bfcb5cf7 by Ben Gamari at 2020-11-19T15:48:20-05:00
gitlab-ci: Add usage message to ci.sh

- - - - -
841b0fdf by Ben Gamari at 2020-11-19T15:48:20-05:00
gitlab-ci: Add VERBOSE environment variable

And change the make build system's default behavior to V=0, greatly
reducing build log sizes.

- - - - -


30 changed files:

- .gitlab/ci.sh
- compiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/Core/Opt/CprAnal.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/Pipeline.hs
- compiler/GHC/Core/Opt/SetLevels.hs
- compiler/GHC/Core/Opt/Simplify.hs
- compiler/GHC/Core/Opt/Simplify/Utils.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Opt/WorkWrap/Utils.hs
- compiler/GHC/CoreToStg.hs
- compiler/GHC/CoreToStg/Prep.hs
- compiler/GHC/Iface/Syntax.hs
- compiler/GHC/Stg/Lift/Analysis.hs
- compiler/GHC/Types/Demand.hs
- compiler/GHC/Types/Id.hs
- compiler/GHC/Types/Id/Info.hs
- compiler/GHC/Types/Id/Make.hs
- compiler/GHC/Utils/Outputable.hs
- docs/users_guide/9.2.1-notes.rst
- docs/users_guide/debugging.rst
- docs/users_guide/exts/ffi.rst
- docs/users_guide/exts/instances.rst
- docs/users_guide/using-optimisation.rst
- libraries/base/GHC/Ix.hs
- rts/linker/SymbolExtras.c
- testsuite/tests/arityanal/should_compile/Arity01.stderr
- testsuite/tests/arityanal/should_compile/Arity02.stderr
- testsuite/tests/arityanal/should_compile/Arity03.stderr
- testsuite/tests/arityanal/should_compile/Arity04.stderr


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/3147e41da9355f04da3b438d342ce259c8183a38...841b0fdfaeab70319926ee743969d8a1e4d40d1e

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/3147e41da9355f04da3b438d342ce259c8183a38...841b0fdfaeab70319926ee743969d8a1e4d40d1e
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20201119/cfa61568/attachment-0001.html>


More information about the ghc-commits mailing list