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

Marge Bot gitlab at gitlab.haskell.org
Fri Jun 12 18:32:01 UTC 2020



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


Commits:
4fd0f17d by Sylvain Henry at 2020-06-12T14:31:40-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.

- - - - -
4e6dcc7b by Sylvain Henry at 2020-06-12T14:31:40-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`)

- - - - -
1165b395 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Remove unused code

- - - - -
0447c173 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Refactor homeUnit

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

- - - - -
2c82f343 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Rename unsafeGetUnitInfo into unsafeLookupUnit

- - - - -
4d93c287 by Sylvain Henry at 2020-06-12T14:31:42-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.

- - - - -
09a76e92 by Sylvain Henry at 2020-06-12T14:31:42-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

- - - - -
ec4c52cd by Sylvain Henry at 2020-06-12T14:31:42-04:00
Remove LinkerUnitId type alias

- - - - -
18449b32 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Refactor WiredMap

* Remove WiredInUnitId and WiredUnitId type aliases

- - - - -
98b5e494 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Document and refactor `mkUnit` and `mkUnitInfoMap`

- - - - -
c4f90e16 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Remove PreloadUnitId type alias

- - - - -
6ad18f85 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Rename listUnitInfoMap into listUnitInfo

There is no Map involved

- - - - -
a347d747 by Sylvain Henry at 2020-06-12T14:31:42-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.

- - - - -
2ff6816c by Sylvain Henry at 2020-06-12T14:31:42-04:00
Make ClosureUnitInfoMap uses UnitInfoMap

- - - - -
fd07e3c8 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Remove ClosureUnitInfoMap

- - - - -
136f74f4 by Sylvain Henry at 2020-06-12T14:31:42-04:00
Rename Package into Unit (2)

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

- - - - -
1981a957 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Move dump_mod_map into initUnits

- - - - -
abebfe36 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Move wiring of homeUnitInstantiations outside of mkUnitState

- - - - -
145cf0cb by Sylvain Henry at 2020-06-12T14:31:43-04:00
Avoid timing module map dump in initUnits

- - - - -
ee7e44d9 by Sylvain Henry at 2020-06-12T14:31:43-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

- - - - -
a3171103 by Sylvain Henry at 2020-06-12T14:31:43-04:00
DynFlags: refactor unwireUnit

- - - - -
f45c4877 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Document getPreloadUnitsAnd

- - - - -
bdc777c6 by Sylvain Henry at 2020-06-12T14:31:43-04:00
DynFlags: remove useless add_package parameter

- - - - -
77089dd6 by Sylvain Henry at 2020-06-12T14:31:43-04:00
DynFlags: make listVisibleModuleNames take a UnitState

- - - - -
73ea5f2c by Sylvain Henry at 2020-06-12T14:31:43-04:00
Refactor and document add_package

- - - - -
f2be023d by Sylvain Henry at 2020-06-12T14:31:43-04:00
Refactor and document closeUnitDeps

- - - - -
7a29830d by Sylvain Henry at 2020-06-12T14:31:43-04:00
DynFlags: findWiredInUnits

- - - - -
e87f4557 by Sylvain Henry at 2020-06-12T14:31:43-04:00
DynFlags: reportCycles, reportUnusable

- - - - -
9e8c5b51 by Sylvain Henry at 2020-06-12T14:31:43-04:00
DynFlags: merge_databases

- - - - -
f1a97232 by Sylvain Henry at 2020-06-12T14:31:43-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.

- - - - -
282a1621 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Move distrustAll into mkUnitState

- - - - -
6d5a9f78 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Create helper upd_wired_in_home_instantiations

- - - - -
a59f1583 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Put database cache in UnitConfig

- - - - -
6ebfa1e1 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Don't return preload units when we set DyNFlags

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

- - - - -
80a09bd7 by Sylvain Henry at 2020-06-12T14:31:43-04:00
NCGConfig: remove useless ncgUnitId field

- - - - -
2bd99a76 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Doc: fix some comments

- - - - -
52286510 by Sylvain Henry at 2020-06-12T14:31:43-04:00
Bump haddock submodule and allow metric decrease

Metric Decrease:
    T12150
    T12234
    T5837

Metric Increase:
    T16190

- - - - -
e2e8210a by Simon Peyton Jones at 2020-06-12T14:31:43-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

- - - - -
561830ce by Viktor Dukhovni at 2020-06-12T14:31:48-04:00
Add introductory prose for Data.Traversable

- - - - -
ae1d6926 by Oleg Grenrus at 2020-06-12T14:31:51-04:00
Fix #12073: Add MonadFix Q instance

- - - - -
4917463e by Ben Gamari at 2020-06-12T14:31:52-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/5101a4a4315b629171eaa7dc1bf4fdd82d5553ed...4917463e8931dd21943dd6ee1f68f27ffb7c30e4

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5101a4a4315b629171eaa7dc1bf4fdd82d5553ed...4917463e8931dd21943dd6ee1f68f27ffb7c30e4
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/1b993a89/attachment-0001.html>


More information about the ghc-commits mailing list