[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 41 commits: Only test T16190 with the NCG

Marge Bot gitlab at gitlab.haskell.org
Sat Jun 13 00:32:43 UTC 2020



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


Commits:
6e2ef36a by Sylvain Henry at 2020-06-12T20:32:29-04:00
Only test T16190 with the NCG

T16190 is meant to test a NCG feature. It has already caused spurious
failures in other MRs (e.g. !2165) when LLVM is used.

- - - - -
9ff09d9a by Sylvain Henry at 2020-06-12T20:32:29-04:00
DynFlags refactoring VIII (#17957)

* Remove several uses of `sdocWithDynFlags`, especially in GHC.Llvm.*

* Add LlvmOpts datatype to store Llvm backend options

* Remove Outputable instances (for LlvmVar, LlvmLit, LlvmStatic and
  Llvm.MetaExpr) which require LlvmOpts.

* Rename ppMetaExpr into ppMetaAnnotExpr (pprMetaExpr is now used in place of `ppr :: MetaExpr -> SDoc`)

- - - - -
852cb362 by Sylvain Henry at 2020-06-12T20:32:31-04:00
Remove unused code

- - - - -
d465e409 by Sylvain Henry at 2020-06-12T20:32:31-04:00
Refactor homeUnit

* rename thisPackage into homeUnit
* document and refactor several Backpack things

- - - - -
4c7b1277 by Sylvain Henry at 2020-06-12T20:32:31-04:00
Rename unsafeGetUnitInfo into unsafeLookupUnit

- - - - -
aa534bc4 by Sylvain Henry at 2020-06-12T20:32:31-04:00
Add allowVirtualUnits field in PackageState

Instead of always querying DynFlags to know whether we are allowed to
use virtual units (i.e. instantiated on-the-fly, cf Note [About units]
in GHC.Unit), we store it once for all in
`PackageState.allowVirtualUnits`.

This avoids using DynFlags too much (cf #17957) and is preliminary work
for #14335.

- - - - -
689f4785 by Sylvain Henry at 2020-06-12T20:32:31-04:00
Enhance UnitId use

* use UnitId instead of String to identify wired-in units
* use UnitId instead of Unit in the backend (Unit are only use by
  Backpack to produce type-checked interfaces, not real code)
* rename lookup functions for consistency
* documentation

- - - - -
23f78045 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Remove LinkerUnitId type alias

- - - - -
e76bcaa9 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Refactor WiredMap

* Remove WiredInUnitId and WiredUnitId type aliases

- - - - -
33de2864 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Document and refactor `mkUnit` and `mkUnitInfoMap`

- - - - -
2f62e742 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Remove PreloadUnitId type alias

- - - - -
b96ceec1 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Rename listUnitInfoMap into listUnitInfo

There is no Map involved

- - - - -
b2d70476 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Rename Package into Unit

The terminology changed over time and now package databases contain
"units" (there can be several units compiled from a single Cabal
package: one per-component, one for each option set, one per
instantiation, etc.). We should try to be consistent internally and use
"units": that's what this renaming does. Maybe one day we'll fix the UI
too (e.g. replace -package-id with -unit-id, we already have
-this-unit-id and ghc-pkg has -unit-id...) but it's not done in this
patch.

* rename getPkgFrameworkOpts into getUnitFrameworkOpts
* rename UnitInfoMap into ClosureUnitInfoMap
* rename InstalledPackageIndex into UnitInfoMap
* rename UnusablePackages into UnusableUnits
* rename PackagePrecedenceIndex into UnitPrecedenceMap
* rename PackageDatabase into UnitDatabase
* rename pkgDatabase into unitDatabases
* rename pkgState into unitState
* rename initPackages into initUnits
* rename renamePackage into renameUnitInfo
* rename UnusablePackageReason into UnusableUnitReason
* rename getPackage* into getUnit*
* etc.

- - - - -
b80824de by Sylvain Henry at 2020-06-12T20:32:32-04:00
Make ClosureUnitInfoMap uses UnitInfoMap

- - - - -
5935d2d1 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Remove ClosureUnitInfoMap

- - - - -
0fbb57bc by Sylvain Henry at 2020-06-12T20:32:32-04:00
Rename Package into Unit (2)

* rename PackageState into UnitState
* rename findWiredInPackages into findWiredInUnits
* rename lookupModuleInAll[Packages,Units]
* etc.

- - - - -
c2eb2817 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Move dump_mod_map into initUnits

- - - - -
313bb166 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Move wiring of homeUnitInstantiations outside of mkUnitState

- - - - -
a9e7f7d2 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Avoid timing module map dump in initUnits

- - - - -
4a77ede4 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Remove preload parameter of mkUnitState

* Remove preload parameter (unused)
* Don't explicitly return preloaded units: redundant because already
  returned as "preloadUnits" field of UnitState

- - - - -
f61ffe29 by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: refactor unwireUnit

- - - - -
a1a8d58d by Sylvain Henry at 2020-06-12T20:32:32-04:00
Document getPreloadUnitsAnd

- - - - -
8c49d35a by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: remove useless add_package parameter

- - - - -
7b3c0af7 by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: make listVisibleModuleNames take a UnitState

- - - - -
fd4b0943 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Refactor and document add_package

- - - - -
427a829d by Sylvain Henry at 2020-06-12T20:32:32-04:00
Refactor and document closeUnitDeps

- - - - -
8c399c32 by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: findWiredInUnits

- - - - -
a6069ff6 by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: reportCycles, reportUnusable

- - - - -
46768f3f by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: merge_databases

- - - - -
3dc1d9b3 by Sylvain Henry at 2020-06-12T20:32:32-04:00
DynFlags: add UnitConfig datatype

Avoid directly querying flags from DynFlags to build the UnitState.
Instead go via UnitConfig so that we could reuse this to make another
UnitState for plugins.

- - - - -
16cae8e5 by Sylvain Henry at 2020-06-12T20:32:32-04:00
Move distrustAll into mkUnitState

- - - - -
b2cba9ae by Sylvain Henry at 2020-06-12T20:32:32-04:00
Create helper upd_wired_in_home_instantiations

- - - - -
8b5d066c by Sylvain Henry at 2020-06-12T20:32:32-04:00
Put database cache in UnitConfig

- - - - -
afc2245b by Sylvain Henry at 2020-06-12T20:32:32-04:00
Don't return preload units when we set DyNFlags

Preload units can be retrieved in UnitState when needed (i.e. in GHCi)

- - - - -
87b7edb2 by Sylvain Henry at 2020-06-12T20:32:32-04:00
NCGConfig: remove useless ncgUnitId field

- - - - -
6916d9bc by Sylvain Henry at 2020-06-12T20:32:32-04:00
Doc: fix some comments

- - - - -
50a3198e by Sylvain Henry at 2020-06-12T20:32:32-04:00
Bump haddock submodule and allow metric decrease

Metric Decrease:
    T12150
    T12234
    T5837

Metric Increase:
    T16190

- - - - -
78778644 by Simon Peyton Jones at 2020-06-12T20:32:33-04:00
Trim the demand for recursive product types

Ticket #18304 showed that we need to be very careful
when exploring the demand (esp usage demand) on recursive
product types.

This patch solves the problem by trimming the demand on such types --
in effect, a form of "widening".

See the Note [Trimming a demand to a type] in DmdAnal, which explains
how I did this by piggy-backing on an existing mechansim for trimming
demands becuase of GADTs.  The significant payload of this patch is
very small indeed:

* Make GHC.Core.Opt.WorkWrap.Utils.typeShape use RecTcChecker to
  avoid looking through recursive types.

But on the way

* I found that ae_rec_tc was entirely inoperative and did nothing.
  So I removed it altogether from DmdAnal.

* I moved some code around in DmdAnal and Demand.
  (There are no actual changes in dmdFix.)

* I changed the API of DmsAnal.dmdAnalRhsLetDown to return
  a StrictSig rather than a decorated Id

* I removed the dead function peelTsFuns from Demand

Performance effects:

Nofib: 0.0% changes.  Not surprising, because they don't
       use recursive products

Perf tests

T12227:
  1% increase in compiler allocation, becuase $cto gets w/w'd.
  It did not w/w before because it takes a deeply nested
  argument, so the worker gets too many args, so we abandon w/w
  altogether (see GHC.Core.Opt.WorkWrap.Utils.isWorkerSmallEnough)

  With this patch we trim the demands.  That is not strictly
  necessary (since these Generic type constructors are like
  tuples -- they can't cause a loop) but the net result is that
  we now w/w $cto which is fine.

UniqLoop:
  16% decrease in /runtime/ allocation. The UniqSupply is a
  recursive product, so currently we abandon all strictness on
  'churn'.  With this patch 'churn' gets useful strictness, and
  we w/w it.  Hooray

Metric Decrease:
    UniqLoop

Metric Increase:
    T12227

- - - - -
6fea7b8a by Viktor Dukhovni at 2020-06-12T20:32:35-04:00
Add introductory prose for Data.Traversable

- - - - -
6e3a0dd2 by Oleg Grenrus at 2020-06-12T20:32:36-04:00
Fix #12073: Add MonadFix Q instance

- - - - -
5f34cf8b by Ben Gamari at 2020-06-12T20:32:37-04:00
testsuite: Increase size of T12150

As noted in #18319, this test was previously very fragile. Increase its
size to make it more likely that its fails with its newly-increased
acceptance threshold.

Metric Increase:
    T12150

- - - - -


30 changed files:

- compiler/GHC.hs
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Builtin/Names/TH.hs
- compiler/GHC/ByteCode/Linker.hs
- compiler/GHC/Cmm/CLabel.hs
- compiler/GHC/Cmm/Parser.y
- compiler/GHC/CmmToAsm/Config.hs
- compiler/GHC/CmmToAsm/Monad.hs
- compiler/GHC/CmmToLlvm.hs
- compiler/GHC/CmmToLlvm/Base.hs
- compiler/GHC/CmmToLlvm/CodeGen.hs
- compiler/GHC/CmmToLlvm/Data.hs
- compiler/GHC/CmmToLlvm/Ppr.hs
- compiler/GHC/Core/Opt/DmdAnal.hs
- compiler/GHC/Core/Opt/WorkWrap/Utils.hs
- compiler/GHC/CoreToStg/Prep.hs
- compiler/GHC/Driver/Backpack.hs
- compiler/GHC/Driver/CodeOutput.hs
- compiler/GHC/Driver/Finder.hs
- compiler/GHC/Driver/Main.hs
- compiler/GHC/Driver/Make.hs
- compiler/GHC/Driver/MakeFile.hs
- compiler/GHC/Driver/Pipeline.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Driver/Session.hs-boot
- compiler/GHC/Driver/Types.hs
- compiler/GHC/HsToCore.hs
- compiler/GHC/HsToCore/Coverage.hs
- compiler/GHC/HsToCore/Usage.hs
- compiler/GHC/Iface/Load.hs


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/4917463e8931dd21943dd6ee1f68f27ffb7c30e4...5f34cf8b70e7f6caccebb138d6300cdd9199950c

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/4917463e8931dd21943dd6ee1f68f27ffb7c30e4...5f34cf8b70e7f6caccebb138d6300cdd9199950c
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/20200612/05603fb8/attachment-0001.html>


More information about the ghc-commits mailing list