| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously shiftRule would rewrite as invalid shift like
```
let x = I# (uncheckedIShiftL# n 80)
in ...
```
to
```
let x = I# (error "invalid shift")
in ...
```
However, this breaks the let/app invariant as `error` is not
okay-for-speculation. There isn't an easy way to avoid this so let's not
try. Instead we just take advantage of the undefined nature of invalid
shifts and return zero.
Fixes #16742.
(cherry picked from commit 0bd3b9dd0428855b6f72f757c1214b5253aa7753)
|
| |
|
|
|
|
|
|
|
| |
- fixes double mention of `traceBinaryEvent#` (the second one should be `traceEvent#`, I think)
- fixes note about `traceEvent#` taking a `String` - the docs say it takes a zero-terminated ByteString.
(cherry picked from commit 63150b9e5583c5fc3252f242981b0d26f11348b2)
|
| |
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
'wip/backport-MR1160', 'wip/backport-MR706' and 'wip/backport-MR769' into wip/ghc-8.8-merges
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
To cover ci conditions from ghc8.6 to 8.9, I add `-haddock` option
to `.circleci/prepare-system.sh` and .gitlab-ci.yml.
after including `mk/flavours/*`.
(cherry picked from commit c4f94320a7048a7f263d8d952d4e12cc0227cf72)
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
To cover ci conditions from ghc8.6 to 8.9, I add `-haddock` option
to `mk/flavours/perf.mk` rather than `.circleci/prepare-system.sh`.
Because in windows condition of ghc-8.9, `mk/flavours/*` is included
after `prepare-system.sh`.
In addition, in linux condition of ghc-8.6, `mk/flavors/perf.mk` is used.
(cherry picked from commit 43a39c3c2195d5b4400efc845a54f153184b1d7f)
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In order to use the `:doc` command in ghci, it is necessary
to compile for core libraries with `-haddock` option.
Especially, the `-haddock` option is essential for release building.
Note:
* The `-haddock` option may affect compile time and binary size.
* But hadrian has already set `-haddock` as the default.
* This patch affects the make-based building.
This patch has been split from !532.
(cherry picked from commit 33e37d0619a9d1d0b8088a109f7eeb4c6fd21027)
|
| | | | |/
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We are iterating through all object code for each heap objects when
checking whether object code can be unloaded. For large projects in
GHCi, this can be very expensive due to the large number of object code
that needs to be loaded/unloaded. To speed it up, this arrangess all
mapped sections of unloaded object code in a sorted array and use binary
search to check if an address location fall on them.
(cherry picked from commit f81f3964b718eab21f0cfe65067c195f2f2a84bd)
|
| | | |/
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fixes #15208.
[skip ci]
(cherry picked from commit 9b4ff57d71eebf6dd71a5d81d0f9c9c2aef80e65)
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The PLT needs to be located within a close distance of
the code calling it under the small memory model.
Fixes #16784.
(cherry picked from commit 0b7f81f560c602f32cfc90fd3fb5f1c52f06ad49)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes a regression, introduced by 67c422ca, where we mprotect'd the
global offset table (GOT) region to PROT_READ before we had finished
filling it, resulting in a linker crash.
Fixes #16779.
(cherry picked from commit 217e6db4af6752b13c586d4e8925a4a9a2f47245)
|
| |/
| |
| |
| | |
(cherry picked from commit bbc752c50f3adcb659cd8447635828e137a0a314)
|
|/ |
|
|
|
|
|
|
| |
As noted in #16555.
(cherry picked from commit 64b1684da09ddb3dc480bd0370adc7b002657a39)
|
|
|
|
| |
(cherry picked from commit 658199cce0aabeed77f3bbbbde6abc0c5c3cc83d)
|
|
|
|
|
|
| |
As noted in #16536.
(cherry picked from commit b351004702c1a595bcedfa3ffeb4f816d5fd8503)
|
|
|
|
|
|
|
|
| |
As noted in #16224, CPUTime001 has been quite problematic, reporting
non-monotonic timestamps in CI. Unfortunately I've been unable to
reproduce this locally.
(cherry picked from commit 1a3420cabdcf6d7d90c154681230f1150604c097)
|
|
|
|
|
|
| |
See #15382.
(cherry picked from commit 23fc615679072a6fa433460a92f597af2ae388b2)
|
|
|
|
| |
(cherry picked from commit 910185a3eb5fd2148e42d39f6374ab03d098b682)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now since we have been a bit more stringent in testsuite cleanliness we
have been marking a lot of tests as fragile using the `skip` modifier.
However, this unfortunately means that we lose the association with the
ticket number documenting the fragility.
Here we introduce `fragile` and `fragile_for` to retain this
information.
(cherry picked from commit 4ca271d1880a6f4c5f49869de7f1920a2073adb6)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| | |
into wip/ghc-8.8-merges
|
| |
| |
| |
| |
| | |
This commit of Haddock is (hopefully) going to be the one corresponding
to a Hackage release of Haddock 2.23.
|
| |
| |
| |
| | |
Missing from f8d24178f30b7837b35a9ea328bc6f520092ff08.
|
|\ \
| | |
| | |
| | | |
into wip/ghc-8.8-merges
|
| | | |
|
| |/
| |
| |
| |
| |
| | |
Implements #16686
automatically generate hieVersion from ghc version
|
|\ \
| | |
| | |
| | | |
wip/ghc-8.8-merges
|
| | |
| | |
| | |
| | |
| | |
| | | |
See #13101 and #15454
(cherry picked from commit 64959e51bf17a9f991cc345476a40515e7b32d81)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
See #13101 + #15454 for motivation. This change reduces the number of
modules that need to be compiled to object code when loading GHC into
GHCi.
(cherry picked from commit c01d5af31c8feb634fc3dffc84e6e7ece61ba190)
|
| | |
| | |
| | |
| | |
| | |
| | | |
Also removes a couple unnecessary MagicHash pragmas
(cherry picked from commit 061276ea5d265eb3c23a3698f0a10f6a764ff4b4)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit splits out a subset of GhcException which do not depend on
pretty printing (SDoc), as a new datatype called
PlainGhcException. These exceptions can be caught as GhcException,
because 'fromException' will convert them.
The motivation for this change is that that the Panic module
transitively depends on many modules, primarily due to pretty printing
code. It's on the order of about 130 modules. This large set of
dependencies has a few implications:
1. To avoid cycles / use of boot files, these dependencies cannot
throw GhcException.
2. There are some utility modules that use UnboxedTuples and also use
`panic`. This means that when loading GHC into GHCi, about 130
additional modules would need to be compiled instead of
interpreted. Splitting the non-pprint exception throwing into a new
module resolves this issue. See #13101
(cherry picked from commit fe9034e9b4820214a8c703bd8a3146ce6eed37b8)
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The idea is to automatically enable -fobject-code for modules that use
UnboxedTuples, along with all the modules they depend on. When looking
into how to solve this, I was pleased to find that there was already
highly similar logic for enabling code generation when -fno-code is
specified but TemplateHaskell is used.
The state before this patch was that if you used unboxed tuples then you
had to enable `-fobject-code` globally rather than on a per module
basis.
|
|\ \
| | |
| | |
| | | |
wip/ghc-8.8-merges
|
| |/
| |
| |
| |
| | |
is available
(cherry picked from commit e172a6d127a65b945b31306ff7b6c43320debfb4)
|
|\ \
| | |
| | |
| | | |
https://gitlab.haskell.org/RyanGlScott/ghc into wip/ghc-8.8-merges
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Commit e75a9afd2989e0460f9b49fa07c1667299d93ee9 added an `unsigned` cast
to account for OSes that have signed `rlim_t` signed. Unfortunately,
the `unsigned` cast has the unintended effect of narrowing `rlim_t` to
only 4 bytes. This leads to some spurious out of memory crashes
(in particular: Haddock crashes with OOM whenn building docs of
`ghc`-the-library).
In this case, `W_` is a better type to cast to: we know it will be
unsigned too and it has the same type as `*len` (so we don't suffer from
accidental narrowing).
|
|\ \
| | |
| | |
| | | |
into wip/ghc-8.8-merges
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
As per @mpickering's suggestion on IRC this is to make the partial
module-graph more easily accessible for API clients which don't intend to
re-implementing depanal.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This changes the way preprocessor failures are presented to the
user. Previously the user would simply get an unlocated message on stderr
such as:
`gcc' failed in phase `C pre-processor'. (Exit code: 1)
Now at the problematic source file is mentioned:
A.hs:1:1: error:
`gcc' failed in phase `C pre-processor'. (Exit code: 1)
This also makes live easier for GHC API clients as the preprocessor error
is now thrown as a SourceError exception.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This enables API clients to handle such errors instead of immideately
crashing in the face of some kinds of user errors, which is arguably quite
bad UX.
Fixes #10887
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This introduces a slight change of behaviour in the interrest of keeping
the code simple: Previously summariseModule would not call
addHomeModuleToFinder for summaries that are being re-used but now we do.
We're forced to to do this in summariseFile because the file being
summarised might not even be on the regular search path! So if GHC is to
find it at all we have to pre-populate the cache with its location. For
modules however the finder cache is really just a cache so we don't have to
pre-populate it with the module's location.
As straightforward as that seems I did almost manage to introduce a bug (or
so I thought) because the call to addHomeModuleToFinder I copied from
summariseFile used to use `ms_location old_summary` instead of the
`location` argument to checkSummaryTimestamp. If this call were to
overwrite the existing entry in the cache that would have resulted in us
using the old location of any module even if it was, say, moved to a
different directory between calls to 'depanal'.
However it turns out the cache just ignores the location if the module is
already in the cache. Since summariseModule has to search for the module,
which has the side effect of populating the cache, everything would have
been fine either way.
Well I'm adding a test for this anyways: tests/depanal/OldModLocation.hs.
|