[Git][ghc/ghc][wip/soulomoon/25647-allow-newtype-instance-in-gadt-syntax] 41 commits: Rework built-in and punned names (#25174, #25179, #25180, #25182)
Patrick (@soulomoon)
gitlab at gitlab.haskell.org
Wed Jan 29 19:24:49 UTC 2025
Patrick pushed to branch wip/soulomoon/25647-allow-newtype-instance-in-gadt-syntax at Glasgow Haskell Compiler / GHC
Commits:
51e3ec83 by Vladislav Zavialov at 2025-01-22T20:41:32+03:00
Rework built-in and punned names (#25174, #25179, #25180, #25182)
This patch rewrites part of the logic for dealing with built-in and
punned names, making it more principled and fixing a few bugs.
* Kill off filterCTuple. Its purpose was to improve pretty-printing of
constraint tuples, and the appropriate place for this is namePun_maybe.
* Remove unitTyCon, unboxedUnitTyCon, and soloTyCon from wiredInTyCons.
Their inclusion in the list was a workaround for shoddy logic in
lookupOrigNameCache. Now we treat tuples of all arities uniformly.
* In isBuiltInOcc_maybe, only match on actual built-in syntax, e.g. "FUN"
shouldn't be there (#25174). Also take ListTuplePuns into account (#25179).
* When matching OccNames, use the ShortByteString directly to avoid
potentially costly conversions to ByteString and String.
* Introduce isInfiniteFamilyOrigName_maybe, a purpose-built helper for
looking up tuples/sums in the OrigNameCache. This clears up the previously
convoluted relation between the orig name cache and built-in syntax.
* Reuse isKnownOrigName_maybe to eliminate the need for isPunOcc_maybe.
* Classify MkSolo and MkSolo# as UserSyntax, thus fixing whole-module
reexports (#25182).
* Teach valid-hole-fits about tuples, unboxed tuples, and unboxed sums,
up to a certain arity (#25180).
* Drop the unnecessary special case for unary constraint tuples in the
type checker (finish_tuple). It was a workaround for the lack of CSolo.
* Update Notes and other comments, add tests.
- - - - -
85c60aea by Teo Camarasu at 2025-01-23T18:06:21-05:00
doc: Add documentation for -XDoAndIfThenElse
Resolves #18631
Co-authored-by: Richard Eisenberg <rae at cs.brynmawr.edu>
- - - - -
4495e48f by Brandon Chinn at 2025-01-24T11:54:24-05:00
Break out GHC.Parser.Lexer.Interface
- - - - -
4f8fc11e by Brandon Chinn at 2025-01-24T11:54:24-05:00
Fix lexing comments in multiline strings (#25609)
Metric Decrease:
MultiLayerModulesRecomp
parsing001
- - - - -
e7ab778f by Matthew Pickering at 2025-01-24T11:55:01-05:00
testsuite: Pass TEST_HC_OPTS to many more tests
This passes `-dno-debug-output` to the test and `-dlint.
- - - - -
c3593101 by Sylvain Henry at 2025-01-24T23:12:20-05:00
Merge ghc-prim's modules into ghc-internal (#24453)
ghc-internal becomes the only wired-in package exposing primitives.
There are some minor GHC allocation regressions, but they barely cross
the thresholds and only with the wasm backend. They're likely due to
longer symbols (ghc-internal vs ghc-prim, GHC.Internal.X vs GHC.X).
Metric Increase:
T13035
T1969
T4801
T9961
- - - - -
70f7741a by Jens Petersen at 2025-01-24T23:12:58-05:00
hp2ps/Utilities.c: add extern parameter types for malloc and realloc for C23
use portable C types!
- - - - -
a1d92378 by Brandon Chinn at 2025-01-25T15:11:54-08:00
Fix for alex-3.5.2.0 (#25623)
This INLINE pragma for alexScanUser was added in 9.12, but then I
ported the change to alex in 3.5.2.0
(https://github.com/haskell/alex/pull/262).
I didn't realize that GHC errors on duplicate INLINE pragmas, so
this ended up being a breaking change.
This change should be backported into 9.12
- - - - -
62760367 by ARATA Mizuki at 2025-01-27T16:23:06-05:00
x86 NCG: Make MOVD's output format explicit
The old design led to inference of a wrong format,
losing upper bits of a vector register.
Fixes #25659
Co-authored-by: sheaf <sam.derbyshire at gmail.com>
- - - - -
f19ab490 by Simon Hengel at 2025-01-27T16:23:45-05:00
doc: Correct JSON schema for `-fdiagnostics-as-json` (fixes #25393)
- - - - -
e16eae65 by Cheng Shao at 2025-01-27T21:41:39+00:00
hadrian: fix bootstrap with 9.12.1
This patch bumps hadrian index-state to fix bootstrap with 9.12.1.
- - - - -
8071bad8 by Jeffrey Young at 2025-01-28T21:45:32-05:00
base: add SrcLoc changes to changelog, 4.21.0.0
I accidentally dropped this in !13381
- closes #25614
See:
- ea4587794b9e3a098f9c02bd6cea2294af2539ce (the 13381 commit)
- Issue #25614
- - - - -
9dcc7e28 by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Rename `cloneBndrs` and such — now all the monadic ones have an `M` suffix.
We now have `cloneBndrs` and `cloneRecIdBndrs` which take a `UniqSupply` argument, and `cloneBndrsM` and `cloneRecIdBndrsM` which rather have a `MonadUnique` constraint.
- - - - -
643dd3d8 by Matthew Farkas-Dyck at 2025-01-29T02:27:48-05:00
Use `Infinite` in unique generation, and clean up some other partial uni patterns as well.
Also drop the losing `instance MonadFail UniqSM`.
We redefine `getUniquesM` in terms of `Infinite` rather than `[]`, and define another method `getUniqueListM` for the use sites where we actually want a `[]`.
Thus, at many sites, we can avoid the partiality of the empty list case.
We also define `withUniques`, `withUniquesM`, and `withUniquesM'`, which traverse an arbitrary `Traversable` structure and introduce a `Unique` for each element.
This allows us to redefine various functions to operate on more appropriate types than `[]` and avoid further partiality (in the form of incomplete-uni-patterns).
- - - - -
dd0acc3c by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Use `Infinite` in `GHC.Tc.Deriv.Functor`.
Make the list of variables to use in generated code `Infinite`, to avoid panicking on the (now impossible) empty list case.
- - - - -
4e9adedf by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Use `Infinite` in `GHC.Runtime.Debugger`.
Make the list of available names `Infinite`, to avoid panicking on the (now impossible) empty list case.
- - - - -
bed812b7 by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Avoid incomplete-uni-patterns in `GHC.Cmm.DebugBlock`.
We do so by changing the type of `BlockContext` to statically (in GHC) exclude the possibility of Cmm statics, and using `NonEmpty` lists of `BlockContext`s in `cmmDebugGen`.
- - - - -
27587df3 by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Avoid incomplete-uni-patterns in `GHC.Types.Literal`.
We do so by introducing `mkLitNumberWrap'` whose ultimate codomain is `Integer` rather than `Literal`, and then use that rather than `mkLitNumberWrap` where we just need the number rather than the `Literal`.
- - - - -
138de0ff by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Avoid incomplete-uni-patterns in `GHC.CmmToAsm.X86.CodeGen`.
- Match the vector element list only once in `shuffleInstructions`.
- Define `isSuitableFloatingPointLit_maybe` which returns `Just` the width if the lit is indeed suitable.
- - - - -
d8cb3d36 by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Clean up more incomplete uni patterns.
At some sites, we merely panic if the `[]` or `Maybe` is empty when we convert to `NonEmpty` or `Identity`, but at least now we make it explicit.
At other sites, we are able to use more precise types and avoid the partiality altogether. To do so, we redefine various functions to operate over `Traversable` arguments, so we can use the appropriate shape where known.
- - - - -
f251bd22 by M Farkas-Dyck at 2025-01-29T02:27:48-05:00
Outline `expectJustPanic`.
- - - - -
a963a1a5 by Marc Scholten at 2025-01-29T02:28:35-05:00
base: Introduce Data.Enum.enumerate (CLC #306)
https://github.com/haskell/core-libraries-committee/issues/306
- - - - -
944712da by Ben Gamari at 2025-01-29T02:29:13-05:00
base: Update description of locking behavior
- - - - -
85abc69c by Ben Gamari at 2025-01-29T02:29:51-05:00
base: Fix @since annotation of Data.Bounded
Fixes #25615.
- - - - -
2ca41c62 by Ben Gamari at 2025-01-29T02:30:29-05:00
StgToByteCode: Fix overly-broad handling of Addr# literals
Previously we assumed that all unlifted types were `Addr#` but this
isn't true. As noted in #25638, unlifted nullary data constructor
workers can also appear at the top-level and are obviously not of type
`Addr#`.
Note that there is more work to be done to properly handle unlifted data
constructors (especially nullary; see #25636). However, this is a small
step in the right direction.
Closes #25641.
- - - - -
ec26c54d by Ben Gamari at 2025-01-29T02:30:29-05:00
StgToByteCode: Assert that PUSH_G'd values are lifted
We currently do not support top-level unlifted data constructor applications,
therefore this is a safe assertion.
Pointed out by @sheaf.
- - - - -
8847125f by Ben Gamari at 2025-01-29T02:31:07-05:00
gitlab-ci: Run test-primops testsuite in ~"full-ci" pipeline
Closes #25654.
- - - - -
bf8c7d6e by Matthew Pickering at 2025-01-29T02:31:44-05:00
bytecode: Do not generate `SLIDE x 0` instructions
SLIDE x 0 is a no-op as it means to shift x elements of the stack by no
spaces. In the interpreter, this results in a loop which copies an array
element into the same place.
I have instrumented GHCi to count how many of these instructions are interpreted.
The workload was `ghc` compiling two simple modules.
Total no-op slides: 7793476
Total slides: 11413289
Percentage useless (slides): 68%
Percentage uselss of total instructions: 9%
- - - - -
a47dd756 by Patrick at 2025-01-29T19:24:45+00:00
update kcConDecl to also consider the result type
in newtype GADT instance
- - - - -
e33618ff by Patrick at 2025-01-29T19:24:45+00:00
peek at the result kind
- - - - -
49d62647 by Patrick at 2025-01-29T19:24:45+00:00
test if gadt has UserSuppliedResultKind in lhs, we let tc_res_kind to unify with rhs result kind if not to gain more inference
- - - - -
ac11b35d by Patrick at 2025-01-29T19:24:45+00:00
format and remove getTyConResultKind
- - - - -
17f99f41 by Patrick at 2025-01-29T19:24:45+00:00
format
- - - - -
ca2e1273 by Patrick at 2025-01-29T19:24:45+00:00
add comment
- - - - -
e26a2e79 by Patrick at 2025-01-29T19:24:45+00:00
cleanup
- - - - -
f2da933a by Patrick at 2025-01-29T19:24:45+00:00
cleanup
- - - - -
d8e56d10 by Patrick at 2025-01-29T19:24:45+00:00
update T25611a
- - - - -
67da4cd4 by Patrick at 2025-01-29T19:24:45+00:00
rename and add note
- - - - -
8cc0272d by Patrick at 2025-01-29T19:24:45+00:00
update note
- - - - -
67da6f95 by Patrick at 2025-01-29T19:24:45+00:00
update note
- - - - -
19560b50 by Patrick at 2025-01-29T19:24:45+00:00
format
- - - - -
30 changed files:
- .gitlab-ci.yml
- .gitlab/ci.sh
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/Builtin/Types.hs
- compiler/GHC/Builtin/Uniques.hs
- compiler/GHC/ByteCode/Linker.hs
- compiler/GHC/Cmm/DebugBlock.hs
- compiler/GHC/Cmm/MachOp.hs
- compiler/GHC/Cmm/ThreadSanitizer.hs
- compiler/GHC/Cmm/Utils.hs
- compiler/GHC/CmmToAsm/AArch64/CodeGen.hs
- compiler/GHC/CmmToAsm/CFG.hs
- compiler/GHC/CmmToAsm/PPC/Instr.hs
- compiler/GHC/CmmToAsm/Reg/Graph/Stats.hs
- compiler/GHC/CmmToAsm/Reg/Linear.hs
- compiler/GHC/CmmToAsm/Reg/Linear/JoinToTargets.hs
- compiler/GHC/CmmToAsm/Reg/Liveness.hs
- compiler/GHC/CmmToAsm/X86/CodeGen.hs
- compiler/GHC/CmmToAsm/X86/Instr.hs
- compiler/GHC/CmmToAsm/X86/Ppr.hs
- compiler/GHC/CmmToLlvm/CodeGen.hs
- compiler/GHC/Core/Make.hs
- compiler/GHC/Core/Opt/ConstantFold.hs
- compiler/GHC/Core/Opt/SetLevels.hs
- compiler/GHC/Core/Opt/Simplify/Iteration.hs
- compiler/GHC/Core/Opt/Simplify/Utils.hs
- compiler/GHC/Core/Opt/SpecConstr.hs
- compiler/GHC/Core/Opt/Specialise.hs
- compiler/GHC/Core/Opt/WorkWrap/Utils.hs
- compiler/GHC/Core/Subst.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/6df0b1b34b6bd307db0087ce9d3852bf24980c01...19560b50b390175bf6f9173f639ee08fcec29ef2
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/6df0b1b34b6bd307db0087ce9d3852bf24980c01...19560b50b390175bf6f9173f639ee08fcec29ef2
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/20250129/3aeb7ec9/attachment-0001.html>
More information about the ghc-commits
mailing list