[Git][ghc/ghc][wip/9.12-forward-ports] 39 commits: LLVM: When emitting a vector literal with ppTypeLit, include the type information
Zubin (@wz1000)
gitlab at gitlab.haskell.org
Fri Dec 20 09:43:27 UTC 2024
Zubin pushed to branch wip/9.12-forward-ports at Glasgow Haskell Compiler / GHC
Commits:
2d3a0a70 by ARATA Mizuki at 2024-12-15T18:35:30-05:00
LLVM: When emitting a vector literal with ppTypeLit, include the type information
Fixes #25561
- - - - -
bfacc086 by Simon Peyton Jones at 2024-12-15T18:36:05-05:00
Fix signature lookup in instance declarations
This fixes a bug introduced by the fix to #16610
- - - - -
80f0e02d by Simon Peyton Jones at 2024-12-16T17:13:52+00:00
Improve GHC build times
Two small changes
* In GHC.Data.Unboxed, never omit interface pragmas. In "fast builds"
one might omit them generally, but doing so gives very bad
performance for code that imports this module.
* In GHC.Hs.Dump don't do type-class specialisation. For some reason
it goes mad and generates vast amounts of useless code. See #25463.
- - - - -
175a1355 by Simon Peyton Jones at 2024-12-16T17:13:52+00:00
Refactor Lint
Refactor Lint for two reasons:
* To improve performance
* To prepare for type-lets
The big changes are all in GHC.Core.Lint:
* Change the main APIs:
* `lintType` returns nothing rather than returning a `LintedType`;
* `lintCoercion` return nothing rather than returning a `LintedCoercion`
Reason: these functions did a lot of allocation to return a substituted
type/coercion that was often discarded, or used only to extract its kind.
Instead we now return nothing, and, when needed, extract the kind and
substitute.
* Applications are treated as a whole, by `lintApp`. By treating
multiple arguments all at once we avoid performing multiple
substitutions, each substituting a single type variable. This can
make an absolutely huge difference.
Overall this led to a pretty massive rewrite of Lint, with many smaller
changes.
Smaller chnages elsewhere
* Rename `GHC.Core.TyCo.Subst.getSubstInScope` to `substInScopeSet` for consistency
* Define and use `GHC.Core.Type.liftedTypeOrConstraintKind`
Performance. This MR someimtes gives gives a very large improvement in
compile time, when Lint is on. here is a selection of changes over 5%
in perf/compiler (with -dcore-lint)
T25196 -97.0%
T14766 -89.7%
T14683 -74.4%
T5631 -60.9%
T20261 -56.7%
T18923 -17.6%
T13035 -15.8%
T6048 -15.8%
CoOpt_Read -14.4%
T9630 -10.9%
T5642 -7.3%
Eliminating the egregious offenders is a big win.
However, in some cases the compiler allocation /increases/. Here ae the
changes over 1%:
T9961 1.5%
T8095 2.8%
T14052 3.9%
T12545 4.5%
T14052Type 5.5%
T5030 8.0%
T5321Fun 8.3%
T3064 12.7%
CoOpt_Singletons 15.6%
T9198 16.0%
LargeRecord 18.1%
I looked at the two biggest increases in compile-time bytes allocated. Interestingly,
they both show substantial *decreases* in actual compile time, due to much smaller GC times.
I'm honestly not sure either why the allocation increases, or why the GC time decreases;
but I'm going to take the win!
T9198
Baseline With patch
No Lint
Alloc 44.6M 44.6M
Mut time 0.23s 0.22s
GC time 0.21s 0.21s
With Lint
Alloc 309M 360M
Mut time 1.51s 0.85s
GC time 2.97s 0.25s
-------------------
LargeRecord
Baseline With patch
No Lint
Alloc 1.37G 1.37G
Mut time 2.33s 2.33s
GC time 2.40s 2.42s
With Lint
Alloc 3.4G 4.0G
Mut time 6.02s 5.68s
GC time 3.67s 3.03s
IMPORTANT NOTE: These changes don't show up in CI because in CI the
tests in perf/compiler are all run with -dcore-lint switched off. I
gathered this data with some manual runs.
- - - - -
8ef2dad6 by Simon Peyton Jones at 2024-12-17T02:48:09-05:00
Add Note [Typechecking overloaded literals]
See #25494.
- - - - -
e86b1b20 by Ben Gamari at 2024-12-17T13:51:39-05:00
testsuite: Use math.inf instead of division-by-zero
This both more directly captures the intent and also fixes #25580.
- - - - -
430d965a by Ben Gamari at 2024-12-17T13:52:15-05:00
rts: Fix incorrect format specifiers in era profiling
Fixes #25581.
- - - - -
267098ad by Andreas Klebinger at 2024-12-18T23:43:13-05:00
Document `-prof` and non `-prof` code being incompatible.
Fixes #25518.
- - - - -
04433916 by Zubin Duggal at 2024-12-18T23:43:50-05:00
ghcup metadata: output metadata fragment in CI
(cherry picked from commit 52b58a660e735b20961d792d8fa9267f01247a50)
- - - - -
7c78804e by Zubin Duggal at 2024-12-18T23:43:50-05:00
ghcup metatdata: use fedora33 for redhat
Redhat 9 doesn't have libtinfo.so.5 anymore
(cherry picked from commit dc86785eb43afd1bd292287c064fb5ad94fe8c7f)
- - - - -
1d72cfb2 by Zubin Duggal at 2024-12-18T23:43:50-05:00
ghcup metadata: still use centos for redhat <9
- - - - -
3f7ebc58 by Sylvain Henry at 2024-12-19T20:40:14-05:00
Merge ghc-bignum into ghc-internal (#24453)
First step towards merging ghc-bignum and ghc-prim into ghc-internal.
After this patch, ghc-bignum is deprecated and is just a shallow package
reexporting modules from ghc-internal and base. Use those directly
instead.
Move `gmp` submodule into ghc-internal directory.
- - - - -
ee0150c2 by Rodrigo Mesquita at 2024-12-19T20:40:51-05:00
Improve performance of deriving Show
Significantly improves performance of deriving Show instances by
avoiding using the very polymorphic `.` operator in favour of inlining
its definition. We were generating tons of applications of it, each
which had 3 type arguments!
Improves on #9557
-------------------------
Metric Decrease:
InstanceMatching
T12707
T3294
------------------------
- - - - -
8b266671 by Rodrigo Mesquita at 2024-12-19T20:40:51-05:00
Don't eta expand cons when deriving Data
This eta expansion was introduced with the initial commit for Linear
types.
I believe this isn't needed any longer. My guess is it is an artifact
from the initial linear types implementation: data constructors are
linear, but they shouldn't need to be eta expanded to be used as higher
order functions. I suppose in the early days this wasn't true.
For instance, this works now:
data T x = T x
f = \(x :: forall y. y -> T y) -> x True
f T -- ok!
T is linear, but can be passed where an unrestricted higher order
function is expected. I recall there being some magic around to make
this work for data constructors...
Since this works, there's no need to eta_expand the data constructors in
the derived Data instances.
- - - - -
ba95afab by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump base bound to 4.21 for GHC 9.12
(cherry picked from commit 473a201c6b55aea5bf9c9db0836a66ea1b657e04)
- - - - -
04ed2abc by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump binary submodule to 0.8.9.2
(cherry picked from commit 7199869a52ab45e8856658248bf807954d58cc20)
(cherry picked from commit ec2f40b45c1a3d82d17a2fc07e9ddb9218bc3940)
- - - - -
43ecc800 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump exceptions submodule to 0.10.9
(cherry picked from commit f5b5d1dc2d326368e5b173d622630d77f019b629)
- - - - -
46621347 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump file-io submodule to 0.1.4
(cherry picked from commit ba786681de6ac5fa49938e2cd71a5988f0f40d1f)
- - - - -
b47b1ba4 by Zubin Duggal at 2024-12-20T15:12:17+05:30
bump os-string submodule to 2.0.6
(cherry picked from commit 3a7ffdbb832c045a55fd1ef24f546abdd9d9e30f)
- - - - -
cedc3e3b by Zubin Duggal at 2024-12-20T15:12:17+05:30
bump transformers submodule to 0.6.1.2
(cherry picked from commit 53b46fd437421b9e5a001edc6d1c427439d7714f)
- - - - -
2ff623aa by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump directory submodule to v1.3.9.0
(cherry picked from commit 27dc2664c5404bb462092bb216c2c37b418fd1f8)
- - - - -
ae5c4dde by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump Win32 submodule to v2.14.1.0
(cherry picked from commit 80df88086180f5e39212b2feacf70a9d2b263c6c)
- - - - -
aa652b1f by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump filepath submodule to 1.5.3.0
(cherry picked from commit 29bfae2c58a7303a081a6e7956b9f55e5faf3eeb)
- - - - -
e6c35970 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump file-io submodule to avoid usage of QuasiQuotes
(cherry picked from commit 97b0dff223a6c4cc003adec448104c277f214645)
- - - - -
276c50e6 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump unix submodule to 2.8.6.0
(cherry picked from commit a1f56d6d6a99c100f88ef0a8b4d51298cf24a42d)
- - - - -
309cda56 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump os-string submodule to 2.0.8
(cherry picked from commit 0121b76fd52ea0c0ce5d07085bc195666b63c625)
- - - - -
43717362 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump file-io submodule to avoid usage of QuasiQuotes
(cherry picked from commit 962ceb50c8a6fc370e1c0a267f5cd5562a8cf759)
- - - - -
82b913a7 by Zubin Duggal at 2024-12-20T15:12:17+05:30
Bump filepath submodule to 1.5.4.0
(cherry picked from commit 7bc6877fd5d41c6d5900678ad5e73ed30f366569)
- - - - -
b8263436 by Zubin Duggal at 2024-12-20T15:12:18+05:30
Add haskeline to stage0Packages
Otherwise we link against boot inplace and boot unix as boot haskeline
depends on boot unix.
(cherry picked from commit 90b493769ebdf3cd7be404d18462dc20ac1044df)
- - - - -
fd462ecb by Zubin Duggal at 2024-12-20T15:12:18+05:30
Bump file-io submodule to 0.1.5
(cherry picked from commit 9478b5aefe2877d58baf527edcf936dddbb955b7)
- - - - -
5112c081 by Zubin Duggal at 2024-12-20T15:13:12+05:30
Bump ghc-prim and template-haskell versions
Also bump exceptions and text submodule
(cherry picked from commit 6fc1fa3bdc8f53acdb19e47145789274060e498f)
- - - - -
f482201b by Zubin Duggal at 2024-12-20T15:13:14+05:30
Bump Cabal submodule to 3.14.1.0
(cherry picked from commit 5c9c3e3f79a79bb6d9a77a17c716dc3a0bcbd2aa)
- - - - -
e4b1ab81 by Zubin Duggal at 2024-12-20T15:13:14+05:30
Bump directory submodule to 0.12.2.0
(cherry picked from commit 897906265db37af34ae2aaa016cec417f263407b)
- - - - -
6d90f514 by Zubin Duggal at 2024-12-20T15:13:14+05:30
Fix TH changelog
- - - - -
4d989900 by Zubin Duggal at 2024-12-20T15:13:14+05:30
release: copy index.html from correct directory
(cherry picked from commit cbfd0829cd61928976c9eb17ba4af18272466063)
- - - - -
66633134 by Zubin Duggal at 2024-12-20T15:13:14+05:30
hadrian-multi: warn on unused imports
os-string has redundant imports
(cherry picked from commit dde3796be689ea57543936e22aa5ea4ef7ed995e)
- - - - -
4b671a3d by Zubin Duggal at 2024-12-20T15:13:14+05:30
Bump array submodule for base bump
- - - - -
ea3ac859 by Zubin Duggal at 2024-12-20T15:13:14+05:30
Bump stm submodule for base bump
- - - - -
be70f529 by Zubin Duggal at 2024-12-20T15:13:14+05:30
Bump process submodule for base bump
- - - - -
30 changed files:
- .gitlab-ci.yml
- .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
- .gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
- .gitmodules
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Core.hs
- compiler/GHC/Core/Coercion.hs
- compiler/GHC/Core/Lint.hs
- compiler/GHC/Core/Opt/Arity.hs
- compiler/GHC/Core/Opt/Simplify/Utils.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Opt/Specialise.hs
- compiler/GHC/Core/SimpleOpt.hs
- compiler/GHC/Core/Subst.hs
- compiler/GHC/Core/TyCo/Rep.hs
- compiler/GHC/Core/TyCo/Subst.hs
- compiler/GHC/Core/Type.hs
- compiler/GHC/CoreToStg/Prep.hs
- compiler/GHC/Data/Unboxed.hs
- compiler/GHC/Driver/Config/Core/Rules.hs
- compiler/GHC/Hs/Dump.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/Llvm/Ppr.hs
- compiler/GHC/Rename/Bind.hs
- compiler/GHC/Rename/Env.hs
- compiler/GHC/Tc/Deriv/Generate.hs
- compiler/GHC/Tc/Gen/Default.hs
- compiler/GHC/Tc/Gen/Expr.hs
- compiler/GHC/Tc/Gen/Head.hs
- compiler/GHC/Tc/Solver/Equality.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/46a31b0354e81795cdd5c3b78518dedfb4df0f1f...be70f529df86c1f0a5ba509415f5202bb7b8f862
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/46a31b0354e81795cdd5c3b78518dedfb4df0f1f...be70f529df86c1f0a5ba509415f5202bb7b8f862
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/20241220/ba3376ef/attachment-0001.html>
More information about the ghc-commits
mailing list