| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As suggested by @hsyl20, this commit changes the representations of
functions within a `Backend` record: instead of defunctionalized
enumeration types, the fields have actual arrow types.
The change has these consequences:
- In order to cope with mutual recursion, a number of .hs-boot files
had to be introduced. Mutual recursion occurs in both types and
values; to minimize the amount of mutual recursion, modules that
needed only the types were changed to import
`GHC.Driver.Backend.Types` instead of `GHC.Driver.Backend`.
- Module `GHC.Driver.Backend.Refunctionalize` is no longer needed
and has been removed.
- Client code calls functions directly instead of indirectly via an
"apply" function.
- Documentation is substantially simpler.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this change, `Backend` is no longer a sum type with exposed value
constructors. Decisions that were formerly made by asking "is the
current back end equal to (or different from) this named value
constructor?" are now made by interrogating the back end about
its properties. The properties and the functions that interrogate
them are defined in `GHC.Driver.Backend.Types`.
The `Backend` type is currently a product (record) type, but it could
be make a sum type with only localized changes. For an idea of what
that would look like, see `GHC.Driver.Backend.Legacy`.
|
|
|
|
|
|
| |
bitmap_get is only used in the DEBUG RTS configuration.
Fixes #21079.
|
|
|
|
|
|
|
|
|
|
|
|
| |
As #21076 reports if you are using `-Wcpp-undef` then you get warnings
when using the `MIN_VERSION_GLASGOW_HASKELL` macro because
__GLASGOW_HASKELL_PATCHLEVEL2__ is very rarely explicitliy set (as
version numbers are not 4 components long).
This macro was introduced in 3549c952b535803270872adaf87262f2df0295a4
and it seems the bug has existed ever since.
Fixes #21076
|
| |
|
|
|
|
| |
And note which compiler version it was added in.
|
|
|
|
|
| |
The pre-codegen Stg AST dump was not available in ghci because it
was performed in 'doCodeGen'. This was now moved to 'coreToStg' area.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch relaxes the instruction for load_load_barrier().
Current load_load_barrier() implements full-barrier with `dmb sy`.
It's too strong to order load-load instructions.
We can relax it by using `dmb ld`.
If current load_load_barrier() is used for full-barriers
(load/store - load/store barrier), this patch is not suitable.
See also linux-kernel's smp_rmb() implementation:
https://github.com/torvalds/linux/blob/v5.14/arch/arm64/include/asm/barrier.h#L90
Hopefully, it's better to use `dmb ishld` rather than `dmb ld`
to improve performance. However, I can't validate effects on
a real many-core Arm machine.
|
|
|
|
| |
Didn't get it right the ninth time. Now everything's formatted correctly.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
The last Alpha chip was produced in 2004.
|
|
|
|
| |
Previously we failed to handle the case that `allocateExecPage` failed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This does three major things:
* Enforce the invariant that all strict fields must contain tagged
pointers.
* Try to predict the tag on bindings in order to omit tag checks.
* Allows functions to pass arguments unlifted (call-by-value).
The former is "simply" achieved by wrapping any constructor allocations with
a case which will evaluate the respective strict bindings.
The prediction is done by a new data flow analysis based on the STG
representation of a program. This also helps us to avoid generating
redudant cases for the above invariant.
StrictWorkers are created by W/W directly and SpecConstr indirectly.
See the Note [Strict Worker Ids]
Other minor changes:
* Add StgUtil module containing a few functions needed by, but
not specific to the tag analysis.
-------------------------
Metric Decrease:
T12545
T18698b
T18140
T18923
LargeRecord
Metric Increase:
LargeRecord
ManyAlternatives
ManyConstructors
T10421
T12425
T12707
T13035
T13056
T13253
T13253-spj
T13379
T15164
T18282
T18304
T18698a
T1969
T20049
T3294
T4801
T5321FD
T5321Fun
T783
T9233
T9675
T9961
T19695
WWRec
-------------------------
|
| |
|
|
|
|
|
|
|
| |
I made a mistake when implementing #21029 which meant that certain tests
didn't trigger a GHC recompilation. By adding the `test:ghc` target to
the default settings all tests will now depend on this target unless
explicitly opting out via the no_deps modifier.
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
This test was taking too long to run, so this patch makes it smaller.
-------------------------
Metric Decrease:
LargeRecord
-------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ghc-prim doesn't depend on base so can't have any Monoid or Semigroup
instances. However, attempting to load these definitions ran into issues
when the interface for `GHC.Base` did exist as that would try and load
the interface for `GHC.Types` (which is the module we are trying to
compile and has no interface).
The fix is to just not do this check when we are compiling a module in
ghc-prim.
Fixes #21069
|
| |
|
| |
|
|
|
|
|
| |
Not all events start with CapNo and there's not logic I could see which
adds this to the length.
|
|
|
|
|
|
|
| |
This leads to corrupted eventlogs because the size of EVENT_MEM_RETURN is
completely wrong.
Fixes a bug introduced in 2e29edb7421c21902b47d130d45f60d3f584a0de
|
|
|
|
|
|
|
| |
This leads to corrupted eventlogs because the size of EVENT_IPE is
completely wrong.
Fixes a bug introduced in 2e29edb7421c21902b47d130d45f60d3f584a0de
|
| |
|
|
|
|
|
|
|
|
|
| |
Adapts GHC to the factoring-out of `Cabal-syntax`.
Fixes #20991.
Metric Decrease:
haddock.Cabal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit ef8a3fbf1 ("ghc-boot: Fix metadata handling of writeFileAtomic")
introduced a somewhat over-engineered fix for #14017 by trying to preserve
the current permissions if the target file already exists.
The problem in the issue is simply that the package db cache file should be
world readable but isn't if umask is too restrictive. In fact the previous
fix only handles part of this problem. If the file isn't already there in a
readable configuration it wont make it so which isn't really ideal either.
Rather than all that we now simply always force all the read access bits to
allow access while leaving the owner at the system default as it's just not
our business to mess with it.
|
|
|
|
|
|
|
|
|
|
| |
Previously `addLibrarySearchPath` failed to normalise the added path to
UNC form before passing it to `AddDllDirectory`. Consequently, the call
was subject to the MAX_PATH restriction, leading to the failure of
`test-defaulting-plugin-fail`, among others. Happily, this also nicely
simplifies the implementation.
Closes #21059.
|
|
|
|
| |
We no longer support Windows Vista.
|
| |
|
|
|
|
|
| |
This allows cost centres to be inserted after the core optimization
pipeline has run.
|
|
|
|
|
|
|
|
| |
This patch adds some performance tests for programs that create
large coercions. This is useful because the existing test coverage
is not very representative of real-world situations. In particular,
this adds a test involving an extensible records library, a common
pain-point for users.
|
|
|
|
|
|
| |
Here we try to separate the policy decisions of where to place mappings
from the mechanism of creating the mappings. This makes things
significantly easier to follow.
|
|
|
|
|
|
|
|
| |
As noted in #21057, we really shouldn't be using MAP_FIXED. I would much
rather have the process crash with a "failed to map" error than randomly
overwrite existing mappings.
Closes #21057.
|
| |
|
| |
|
|
|
|
| |
They are not particularly related to linking.
|
| |
|
|
|
|
| |
See #18147
|
|
|
|
| |
Cf https://gitlab.haskell.org/ghc/ghc/-/issues/18431#note_287139
|
| |
|