summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* rts/ThreadPaused: Ordering fixesBen Gamari2022-12-161-2/+2
|
* rts/Messages: RefactorBen Gamari2022-12-161-27/+20
| | | | This doesn't change behavior but makes the code a bit easier to follow.
* checkValidInst: Don't expand synonyms when splitting sigma typesRyan Scott2022-12-154-2/+55
| | | | | | | | | | | | | | | Previously, the `checkValidInst` function (used when checking that an instance declaration is headed by an actual type class, not a type synonym) was using `tcSplitSigmaTy` to split apart the `forall`s and instance context. This is incorrect, however, as `tcSplitSigmaTy` expands type synonyms, which can cause instances headed by quantified constraint type synonyms to be accepted erroneously. This patch introduces `splitInstTyForValidity`, a variant of `tcSplitSigmaTy` specialized for validity checking that does _not_ expand type synonyms, and uses it in `checkValidInst`. Fixes #22570.
* Fix bogus test in LintSimon Peyton Jones2022-12-156-79/+66
| | | | | | | | | | | | The Lint check for branch compatiblity within an axiom, in GHC.Core.Lint.compatible_branches was subtly different to the check made when contructing an axiom, in GHC.Core.FamInstEnv.compatibleBranches. The latter is correct, so I killed the former and am now using the latter. On the way I did some improvements to pretty-printing and documentation.
* compiler: Ensure that MutVar operations have necessary barriersBen Gamari2022-12-151-4/+5
| | | | | | | Here we add acquire and release barriers in readMutVar# and writeMutVar#, which are necessary for soundness. Fixes #22468.
* Package Imports: Get candidate packages also from re-exported modulesMatthew Pickering2022-12-1516-3/+147
| | | | | | | | Previously we were just looking at the direct imports to try and work out what a package qualifier could apply to but #22333 pointed out we also needed to look for reexported modules. Fixes #22333
* rts: Ensure that global regs are never passed as fun call argsBen Gamari2022-12-151-3/+3
| | | | | This is in general unsafe as they may be clobbered if they are mapped to caller-saved machine registers. See Note [Register parameter passing].
* hadrian: Enable Cmm instrumentation in TSAN flavourBen Gamari2022-12-151-1/+1
|
* Hadrian: Drop TSAN_ENABLED define from flavourBen Gamari2022-12-151-3/+5
| | | | This is redundant since the TSANUtils.h already defines it.
* codeGen: Introduce ThreadSanitizer instrumentationBen Gamari2022-12-1511-2/+363
| | | | | | This introduces a new Cmm pass which instruments the program with ThreadSanitizer annotations, allowing full tracking of mutator memory accesses via TSAN.
* cmm/Parser: Atomic load syntaxBen Gamari2022-12-151-3/+23
| | | | | | | Originally I had thought I would just use the `prim` call syntax instead of introducing new syntax for atomic loads. However, it turns out that `prim` call syntax tends to make things quite unreadable. This new syntax seems quite natural.
* cmm/Parser: Add syntax for ordered loads and storesBen Gamari2022-12-153-6/+55
|
* cmm/Parser: Reduce some repetitionBen Gamari2022-12-151-29/+20
|
* Codegen/x86: Eliminate barrier for relaxed accessesBen Gamari2022-12-151-7/+12
|
* llvm: Respect memory specified orderingsBen Gamari2022-12-151-7/+15
|
* cmm: Introduce MemoryOrderingsBen Gamari2022-12-158-24/+36
|
* cmm: Introduce blockConcatBen Gamari2022-12-152-1/+4
|
* hadrian: Don't enable TSAN in stage0 buildBen Gamari2022-12-151-1/+1
|
* configure: Bump min bootstrap GHC version to 9.2Bryan Richter2022-12-131-1/+1
|
* JS: fix object file name comparison (#22578)Sylvain Henry2022-12-131-1/+8
|
* EPA: When splitting out header comments, keep ones for first declAlan Zimmerman2022-12-135-55/+105
| | | | | Any comments immediately preceding the first declaration are no longer kept as header comments, but attach to the first declaration instead.
* Fix loop in the interface representation of some `Unfolding` fieldsGergő Érdi2022-12-1323-169/+332
| | | | | | | | | | | | | | | As discovered in #22272, dehydration of the unfolding info of a recursive definition used to involve a traversal of the definition itself, which in turn involves traversing the unfolding info. Hence, a loop. Instead, we now store enough data in the interface that we can produce the unfolding info without this traversal. See Note [Tying the 'CoreUnfolding' knot] for details. Fixes #22272 Co-authored-by: Simon Peyton Jones <simon.peytonjones@gmail.com>
* Respect -XStrict in the pattern-match checker (#21761)Sebastian Graf2022-12-134-2/+75
| | | | | | | | We were missing a call to `decideBangHood` in the pattern-match checker. There is another call in `matchWrapper.mk_eqn_info` which seems redundant but really is not; see `Note [Desugaring -XStrict matches in Pmc]`. Fixes #21761.
* Add test for #21476Matthew Pickering2022-12-122-0/+5
| | | | | | | This issues seems to have been fixed since the ticket was made, so let's add a test and move on. Fixes #21476
* Mark T21336a fragileBryan Richter2022-12-121-1/+4
|
* Document that Bifunctor instances for tuples are lawful only up to lazinessBodigrim2022-12-111-2/+11
|
* Add heqT, a kind-heterogeneous variant of heqOleg Grenrus2022-12-112-2/+11
| | | | CLC proposal https://github.com/haskell/core-libraries-committee/issues/99
* hlint: Removed redundant UnboxedSums pragmasMatthew Pickering2022-12-093-3/+0
| | | | | | | UnboxedSums is quite confusingly implied by UnboxedTuples, alas, just the way it is. See #22485
* ci: Bump boot images to use ghc-9.4.3Matthew Pickering2022-12-091-4/+4
| | | | Also updates the bootstrap jobs to test booting 9.2 and 9.4.
* hadrian: Update bootstrap plans to 9.2.* series and 9.4.* series.Matthew Pickering2022-12-0935-31/+31
| | | | | | This updates the build plans for the most recent compiler versions, as well as fixing the hadrian-bootstrap-gen script to a specific GHC version.
* ci: Add job to test hadrian-multi commandMatthew Pickering2022-12-093-3/+55
| | | | | I am not sure this job is good because it requires booting HEAD with HEAD, but it should be fine.
* driver: Set correct UnitId when rehydrating modulesMatthew Pickering2022-12-091-2/+3
| | | | | | | | We were not setting the UnitId before rehydrating modules which just led to us attempting to find things in the wrong HPT. The test for this is the hadrian-multi command (which is now added as a CI job). Fixes #22222
* hadrian-toolargs: Add filepath to allowed repl targetsMatthew Pickering2022-12-091-0/+1
|
* hadrian-multi: Put interface files in separate directoriesMatthew Pickering2022-12-092-2/+4
| | | | | Before we were putting all the interface files in the same directory which was leading to collisions if the files were called the same thing.
* Update containers submoduleMatthew Pickering2022-12-091-0/+0
| | | | | | This contains a fix necessary for the multi-repl to work on GHC's code base where we try to load containers and template-haskell into the same session.
* Fix bound thread statusLuite Stegeman2022-12-091-1/+1
|
* Add support for environments that don't have setImmediateLuite Stegeman2022-12-091-4/+13
|
* Fix #22300 Document GHC's extensions to valid whitespaceMike Pilgrem2022-12-092-0/+30
|
* Document TH splices' interaction with INCOHERENT instancesRyan Scott2022-12-091-0/+72
| | | | | | | | | Top-level declaration splices can having surprising interactions with `INCOHERENT` instances, as observed in #22492. This patch resolves #22492 by documenting this strange interaction in the GHC User's Guide. [ci skip]
* testsuite: Mark conc024 fragile on WindowsBryan Richter2022-12-081-1/+1
|
* Fixes around primitive literalsKrzysztof Gogolewski2022-12-087-23/+37
| | | | | | | | | * The SourceText of primitive characters 'a'# did not include the #, unlike for other primitive literals 1#, 1##, 1.0#, 1.0##, "a"#. We can now remove the function pp_st_suffix, which was a hack to add the # back. * Negative primitive literals shouldn't use parentheses, as described in Note [Printing of literals in Core]. Added a testcase to T14681.
* Delete `rts/package.conf.in`John Ericson2022-12-081-331/+0
| | | | | It is a relic of the Make build system. The RTS now uses a `package.conf` file generated the usual way by Cabal.
* Do not strictify a DFun's parameter dictionaries (#22549)Sebastian Graf2022-12-085-38/+106
| | | | | | | | | ... thus fixing #22549. The details are in the refurbished and no longer dead `Note [Do not strictify a DFun's parameter dictionaries]`. There's a regression test in T22549.
* Make `drop` and `dropWhile` fuse (#18964)Sebastian Graf2022-12-084-25/+65
| | | | | | | I copied the fusion framework we have in place for `take`. T18964 asserts that we regress neither when fusion fires nor when it doesn't. Fixes #18964.
* Typeable: Fix module locations of some definitions in GHC.TypesMatthew Pickering2022-12-084-4/+70
| | | | | | | | | | | | | There was some confusion in Data.Typeable about which module certain wired-in things were defined in. Just because something is wired-in doesn't mean it comes from GHC.Prim, in particular things like LiftedRep and RuntimeRep are defined in GHC.Types and that's the end of the story. Things like Int#, Float# etc are defined in GHC.Prim as they have no Haskell definition site at all so we need to generate type representations for them (which live in GHC.Types). Fixes #22510
* Make (^) INLINE (#22324)Sebastian Graf2022-12-082-25/+58
| | | | | | | | | | | | | So that we get to cancel away the allocation for the lazily used base. We can move `powImpl` (which *is* strict in the base) to the top-level so that we don't duplicate too much code and move the SPECIALISATION pragmas onto `powImpl`. The net effect of this change is that `(^)` plays along much better with inlining thresholds and loopification (#22227), for example in `x2n1`. Fixes #22324.
* Fix testsBodigrim2022-12-087-13/+14
|
* Support mtl-2.3 in check-exactBodigrim2022-12-083-4/+7
|
* Allow mtl-2.3 in hadrianBodigrim2022-12-082-2/+2
|
* Update submodule mtl to 2.3.1, parsec to 3.1.15.1, haddock and Cabal to HEADBodigrim2022-12-083-0/+0
|