| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
The release bindists are currently a mixture of validate and release
builds. This is bad because the validate builds don't have profiling
libraries. The fix is to make sure there is a release job for each
platform we want to produce a release for.t
Fixes #21066
|
|
|
|
| |
Like -threaded, stage0 isn't guaranteed to have an event-logging RTS.
|
|
|
|
| |
Close #21056
|
|
|
|
|
|
|
|
|
|
|
| |
There appears to be some inconsistency in system-call type naming across
Darwin toolchains. Specifically:
* the `address` argument to `mach_vm_region` apparently wants to be a
`mach_vm_address_t *`, not a `vm_address_t *`
* the `vmsize` argument to `mach_vm_region` wants to be a
`mach_vm_size_t`, not a `vm_size_t`
|
|
|
|
|
| |
Recent FreeBSD versions gained the sched_getaffinity function, which made two
mutually exclusive #ifdef blocks to be enabled.
|
|
|
|
|
| |
`DynFlags` is gone, but let's move a few trivial things around to get
rid of its module too.
|
| |
|
|
|
|
|
|
|
|
|
| |
`hscSimpleIface` does not depend on or modify the `Maybe Fingerprint` it
is given, only passes it through, so get rid of the extraneous passing.
Perhaps the intent was that there would be an iface fingerprint check of
some sort? but this was never done. If/when we we want to do that, we
can add it back then.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The 'bad_newtype' assertion in GHC.Tc.Solver.Canonical.canEqCanLHSFinish
failed to account for the possibility that the newtype constructor
might not be in scope, in which case we don't provide any guarantees
about canonicalising away a newtype on the RHS of a representational
equality.
Fixes #21010
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We perform validity checking on user-written HasField instances,
for example to disallow:
data Foo a = Foo { fld :: Int }
instance HasField "fld" (Foo a) Bool
However, these checks were also being made on quantified constraints,
e.g.
data Bar where
Bar :: (forall a. HasField s (Foo a) Int) => Proxy s -> Bar
This patch simply skips validity checking for quantified constraints,
in line with what we already do for equality constraints such as
Coercible.
Fixes #20989
|
|
|
|
|
| |
Asked the question:
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7460/diffs#4061f4d17546e239dd10d78c6b48668c2a288e02_1_0
|
|
|
|
|
| |
As requested by @mpickering to collect the information we project from
`HscEnv`
|
|
|
|
| |
Progress towards #20730
|
| |
|
|
|
|
|
| |
In 35bea01b xxhash.c was removed. Remove the extra-source-files
stanza referring to it.
|
|
|
|
|
| |
Also derive some more instances. GHC doesn't need them, but downstream
consumers may need to e.g. put stuff in maps.
|
|
|
|
|
|
| |
* Move `PRINTF` macro from `Stats.h` to `Stats.c` as it's only needed in
the latter.
* Undefine `PRINTF` at the end of `Messages.h` to avoid leaking it.
|
|
|
|
| |
Fixes #20992.
|
| |
|
|
|
|
| |
Not entirely convinced that this is worth doing.
|
|
|
|
|
|
|
| |
This adds logic, enabled in the `-debug` RTS for checking the internal
consistency of the m32 allocator. This area has always made me a bit
nervous so this should help me sleep better at night in exchange for
very little overhead.
|
|
|
|
|
| |
Renamed to mprotectForLinker and allowed setting of arbitrary protection
modes.
|
|
|
|
|
|
|
|
|
|
|
| |
Previously m32 would assume that the program image was located near the
start of the address space and therefore assume that it wanted pages
in the bottom 4GB of address space. Instead we now check whether they
are within 4GB of whereever the program is loaded.
This is necessary on Windows, which now tends to place the image in high
memory. The eventual goal is to use m32 to allocate memory for linker
sections on Windows.
|
|
|
|
|
|
|
|
|
|
|
| |
Note [Tidying multiple names at once] indicates that if multiple
variables have the same name then we shouldn't prioritise one of them
and instead rename them all to a1, a2, a3... etc
This patch implements that change, some error message changes as
expected.
Closes #20932
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes #17469, by improving matters when you use
non-existent field names in a record construction:
data T = MkT { x :: Int }
f v = MkT { y = 3 }
The check is now made in the renamer, in GHC.Rename.Env.lookupRecFieldOcc.
That in turn led to a spurious error in T9975a, which is fixed by
making GHC.Rename.Names.extendGlobalRdrEnvRn fail fast if it finds
duplicate bindings. See Note [Fail fast on duplicate definitions]
in that module for more details.
This patch was originated and worked on by Alex D (@nineonine)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The commit
commit 18df4013f6eaee0e1de8ebd533f7e96c4ee0ff04
Date: Sat Jan 22 01:12:30 2022 +0000
Define and use restoreLclEnv
omitted to change one setLclEnv to restoreLclEnv, namely
the one in GHC.Tc.Errors.warnRedundantConstraints.
This new commit fixes the omission.
|
|
|
|
| |
c.f. #20980
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, directly calling a function that pattern matches on an
unlifted data type which has at least two constructors in GHCi resulted
in a segfault.
This happened due to unaccounted return frame info table pointer. The fix is
to pop the above mentioned frame info table pointer when unlifted things are
returned. See Note [Popping return frame for unlifted things]
authors: bgamari, nineonine
|
|
|
|
|
|
| |
Previously the documentation was subtly incorrect regarding the bounds
of the operation. Fix this and add a test asserting that a zero-length
operation is in fact a no-op.
|
|
|
|
|
| |
This allows us to produce valid code for indexWord8ArrayAs*# on
platforms that lack unaligned memory access.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Related CLC proposal is here: https://github.com/haskell/core-libraries-committee/issues/30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The main motivation for this patch is to allow tests to be added to the
testsuite which test things about the source tree without needing to
build GHC. In particular the notes linter can easily start failing and
by integrating it into the testsuite the process of observing these
changes is caught by normal validation procedures rather than having to
run the linter specially.
With this patch I can run
```
./hadrian/build test --flavour=devel2 --only="uniques"
```
In a clean tree to run the checkUniques linter without having to build
GHC.
Fixes #21029
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Here we introduce a new data structure, RoughMap, inspired by the
previous `RoughTc` matching mechanism for checking instance matches.
This allows [Fam]InstEnv to be implemented as a trie indexed by these
RoughTc signatures, reducing the complexity of instance lookup and
FamInstEnv merging (done during the family instance conflict test)
from O(n) to O(log n).
The critical performance improvement currently realised by this patch is
in instance matching. In particular the RoughMap mechanism allows us to
discount many potential instances which will never match for constraints
involving type variables (see Note [Matching a RoughMap]). In realistic
code bases matchInstEnv was accounting for 50% of typechecker time due
to redundant work checking instances when simplifying instance contexts
when deriving instances. With this patch the cost is significantly
reduced.
The larger constants in InstEnv creation do mean that a few small
tests regress in allocations slightly. However, the runtime of T19703 is
reduced by a factor of 4. Moreover, the compilation time of the Cabal
library is slightly improved.
A couple of test cases are included which demonstrate significant
improvements in compile time with this patch.
This unfortunately does not fix the testcase provided in #19703 but does
fix #20933
-------------------------
Metric Decrease:
T12425
Metric Increase:
T13719
T9872a
T9872d
hard_hole_fits
-------------------------
Co-authored-by: Matthew Pickering <matthewtpickering@gmail.com>
|
|
|
|
| |
Fixes #21002
|
|
|
|
|
|
|
|
|
|
| |
This allows us to remove the dependency on parsec and hence transitively
on text.
Also added some simple unit tests for the parser and fixed two small
issues in the documentation.
Fixes #21033
|
|
|
|
| |
Fixes #14276
|
|
|
|
|
|
| |
Using ghc_plugin_way had the unintended effect of meaning certain tests
weren't run at all when ghc_dynamic=true, if you delete this modifier
then the tests work in both the static and dynamic cases.
|