| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
These are no longer necessary since we now compile as C99.
|
|
|
|
| |
"tracingAddCapabilities" was mis-named
|
|
|
|
|
| |
Make the RTS compilable with a C++ compiler by inserting necessary
casts.
|
| |
|
|
|
|
|
| |
Previously it was sensitive to the labels of threads which it did not
create (e.g. the IO manager event loop threads). Fix this.
|
|
|
|
|
|
|
|
|
| |
Previously UnliftedTVar2 would fail when run with multiple capabilities
(and possibly even with one capability) as it would assume that
`killThread#` would immediately kill the "increment" thread.
Also, refactor the the executable to now succeed with no output and
fails with an exit code.
|
|
|
|
|
|
|
| |
`doneWithMsgThrowTo` was previously too strict in asserting that the
`Message` is locked. Specifically, it failed to consider that the
`Message` may not be locked if we are deleting all threads during RTS
shutdown.
|
|
|
|
|
| |
Incredibly, we previously did not have a single way which would test the
threaded RTS with multiple capabilities and the sanity-checker enabled.
|
|
|
|
|
| |
Was missing dependencies on files generated by templates (e.g.
ghc.cabal)
|
|
|
|
| |
Towards #22530
|
|
|
|
|
|
|
| |
This occname has just been derived from an `Id`, so need to force it
promptly so we can release the Id back to the world.
Another symptom of the bug caused by #19619
|
|
|
|
|
|
|
|
|
|
|
| |
Doesn't force the lazy `OccName` field (#19619) which is already known
as a really bad source of leaks.
When we slam the hammer storing Names on disk (in interface files or the
like), all this should be forced as otherwise a `Name` can easily retain
an `Id` and hence the entire world.
Fixes #22833
|
|
|
|
|
|
|
|
|
| |
This fixes a tricky leak in GHCi where we were retaining old copies of
HscEnvs when reloading. If not all modules were recompiled then these
hydrated fields in break points would retain a reference to the old
HscEnv which could double memory usage.
Fixes #22530
|
|
|
|
|
| |
Create and use moduleGraphModulesBelow in GHC.Unit.Module.Graph that
doesn't need anything from the driver to be used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The HLint jobs takes much longer to run (20 minutes) after "Give the RTS it's own configure script" eb5a6b91
Now the CI job will build the stage0 compiler before it generates the necessary RTS headers.
We either need to:
* Fix the linting rules so they take much less time
* Revert the commit
* Remove the linting of base from the hlint job
* Remove the hlint job
This is highest priority as it is affecting all CI pipelines.
For now I am just disabling the job because there are many more pressing
matters at hand.
Ticket #22830
|
|
|
|
|
|
|
|
|
| |
Nothing deep here; I had failed to bring some
floated dictionary binders into scope.
Exposed by -fspecialise-aggressively
Fixes #22715.
|
| |
|
|
|
|
|
| |
This change fixes a cross-compilation issue from ArchLinux to Windows
because these symbols weren't found.
|
|
|
|
|
| |
Decision to build either unix or Win32 package must be stage specific
for cross-compilation to be supported.
|
|
|
|
|
|
| |
Stage0's ar may not support at-files. Take it into account.
Found while cross-compiling from Darwin to Windows.
|
|
|
|
|
|
|
|
| |
In the wasm NCG, we used to compile MO_F_Neg to 0.0-x. It was an
oversight, there actually exists f32.neg/f64.neg opcodes in the wasm
spec and those should be used instead! The old behavior almost works,
expect when GHC compiles the -0.0 literal, which will incorrectly
become 0.0.
|
|
|
|
|
|
| |
Removes references to make.
Fixes #22480
|
|
|
|
| |
Fixes #22816.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used to print the offset value to a platform word sized integer.
This is incorrect when the offset is negative (e.g. output of cmm
constant folding) and the register is 64-bit but on a 32-bit target,
and may lead to incorrect runtime result (e.g. #22607).
The fix is simple: just treat it as a proper MO_Add, with the correct
width info inferred from the register itself.
Metric Increase:
T12707
T13379
T4801
T5321FD
T5321Fun
|
| |
|
|
|
|
|
|
| |
This was fixed by b13c6ea5
Closes #22671
|
|
|
|
|
|
|
|
|
|
| |
Lint was checking for duplicate external names by calling removeDups,
which needs a comparison function that is passed to Data.List.sortBy.
But the comparison was not a valid ordering - it returned LT
if one of the names was not external.
For example, the previous implementation won't find a duplicate in
[M.x, y, M.x].
Instead, we filter out non-external names before looking for duplicates.
|
|
|
|
| |
This is helpful when debugging multiple component issues.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to preserve existing behaviour it's important to look within the current component before consideirng a module might come from an external component.
This already happened by accident in `downsweep`, (because roots are used to repopulated the cache) but in the `Finder` the logic was the wrong way around.
Fixes #22680
-------------------------
Metric Decrease:
MultiComponentModules
MultiComponentModulesRecomp
-------------------------p
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multiple units can refer to the same files without any problem. Just
another assumption which needs to be updated when we may have multiple
home units.
However, there is the invariant that within each unit each file only
maps to one module, so as long as we also key the cache by UnitId then
we are all good.
This led to some confusing behaviour in GHCi when reloading,
multipleHomeUnits_shared distils the essence of what can go wrong.
Fixes #22679
|
|
|
|
|
|
|
|
|
|
| |
Currently the driver diagnostics don't give any indication about which unit they correspond to.
For example `-Wmissing-home-modules` can fire multiple times for each different home unit and gives no indication about which unit it's actually reporting about.
Perhaps a longer term fix is to generalise the providence information away from a SrcSpan so that these kind of whole project errors can be reported with an accurate provenance. For now we can just include the `UnitId` in the error message.
Fixes #22678
|
|
|
|
|
|
|
|
| |
We should not be producing object files when in interactive mode but we
still produced the dummy o-boot files. These never made it into a
`Linkable` but then confused the recompilation checker.
Fixes #22669
|
|
|
|
|
|
|
|
|
|
| |
hs-boot combo
In interactive mode we don't produce any linkables for hs-boot files. So
we also need to not going looking for them when we check to see if we
have all the right objects needed for recompilation.
Ticket #22669
|
|
|
|
|
|
|
|
|
|
|
| |
The `pruneCache` function assumes that the list of `CachedInfo` all have unique `ModuleName`, this is not true:
* In normal compilation, the same module name can appear for a file and it's boot file.
* In multiple home unit compilation the same ModuleName can appear in different units
The fix is to use a `NodeKey` as the actual key for the interfaces which includes `ModuleName`, `IsBoot` and `UnitId`.
Fixes #22677
|
|
|
|
|
|
|
|
|
|
|
|
| |
satisfies target
This fixes a spurious warning in -Wmissing-home-modules.
This is a simple oversight where when looking for the target in the
first place we augment the search by the -working-directory flag but
then fail to do so when checking this warning.
Fixes #22676
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The key part of this change is to store a UnitId in the
`UsageHomeModule` and `UsageHomeModuleInterface`.
* Fine-grained dependency tracking is used if the dependency comes from
any home unit.
* We actually look up the right module when checking whether we need to
recompile in the `UsageHomeModuleInterface` case.
These scenarios are both checked by the new tests (
multipleHomeUnits_recomp and multipleHomeUnits_recomp_th )
Fixes #22675
|
|
|
|
|
|
|
|
|
| |
...the testsuite doesn't handle this properly since it
also collects run-time metrics. Compile-time metrics
for this test are already tracked via T21839c.
Metric Decrease:
T21839r
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
runtimeRepLevity_maybe was panicing unnecessarily; and
the error printing code made use of the case when it should
return Nothing rather than panicing.
For some bizarre reason perf/compiler/T21839r shows a 10% bump in runtime
peak-megagbytes-used, on a single architecture (alpine). See !9753 for
commentary, but I'm going to accept it.
Metric Increase:
T21839r
|
|
|
|
| |
This has been removed from the downstream metadata.
|
| |
|
|
|
|
|
|
|
| |
Includes a critical fix for wasm32, see
https://github.com/haskell/process/pull/272 for details. Also changes
the existing cross test to include process stuff and avoid future
regression here.
|
|
|
|
|
| |
When building in-tree GMP for wasm32, disable its alloca usage, since
it may potentially cause stack overflow (e.g. #22602).
|
|
|
|
|
|
| |
Updates `text` and `exceptions` submodules for bounds bumps.
Addresses #22767.
|
|
|
|
|
|
| |
To be able to capture string literals with possible escape codes as labels.
Close #22771
|
|
|
|
|
| |
These flags did not make it into the 9.6 release series,
so the "since" annotations must be corrected.
|
|
|
|
| |
Addresses #22268.
|
| |
|
|
|
|
|
|
|
|
| |
The hi_core flavour transformer enables -fwrite-if-simplified-core for
stage1 libraries, which emit core into interface files to make it
possible to restart code generation. Building boot libs with it makes
it easier to use GHC API to prototype experimental backends that needs
core/stg at link time.
|