| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
Now since this is generated by the build system we should ensure that it
is properly cleaned.
[skip ci]
|
| |
|
|
|
|
| |
This #16741 out of the way this should now pass.
|
|
|
|
|
| |
The previous fix, !1095, didn't work as `--show-iface` ignores
`-dsuppress-ticks`. Rework the test instead.
|
|
|
|
|
|
|
|
| |
Before this patch, runghc would only run the GHC detection logic on Windows and
assume that it was invoked through a wrapper script on all other platforms.
This patch lifts this limitation and makes that logic work for the scenario
where someone is calling the runghc executable directly, without passing an
explicit path to GHC.
|
| |
|
|
|
|
|
| |
The libc output buffer wasn't being flushed, making the order
system-depedent.
|
|
|
|
|
| |
Otherwise it the order out the Haskell and C output will be
system-dependent.
|
|
|
|
|
|
| |
Previously T5423 would fail to flush the printf output buffer.
Consequently it was platform-dependent whether the C or Haskell print
output would be emitted first.
|
|
|
|
| |
Musl wants hash-bangs on all executables.
|
|
|
|
|
|
| |
Previously the Event enumeration produced by hsc2hs would sometimes
include a currently-unused POLLRDHUP item. This unused binding would
result in a build failure. Drop it.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Issue #15862 demonstrated examples of type constructors on which
`TcTypeable.tyConIsTypeable` would return `False`, but the `Typeable`
constraint solver in `ClsInst` (in particular, `doTyConApp`) would
try to generate `Typeable` evidence for anyway, resulting in
disaster. This incongruity was caused by the fact that `doTyConApp`
was using a weaker validity check than `tyConIsTypeable` to determine
if a type constructor warrants `Typeable` evidence or not. The
solution, perhaps unsurprisingly, is to use `tyConIsTypeable` in
`doTyConApp` instead.
To avoid import cycles between `ClsInst` and `TcTypeable`, I factored
out `tyConIsTypeable` into its own module, `TcTypeableValidity`.
Fixes #15862.
|
|
|
|
|
|
| |
Previously there were a few cases where operations like `omit_ways`
were incorrectly passed a single way (e.g. `omit_ways('threaded2')`).
This won't work as the author expected.
|
| |
|
|
|
|
| |
As noted in #16819, this operation is racy under concurrent execution.
|
|
|
|
|
|
| |
Previously we just tested for the threaded2 when determining whether to
skip tests which are fragile under concurrent execution. However, this
isn't the only way which is concurrent.
|
|
|
|
|
|
|
|
|
|
| |
This updates the make and Hadrian build flavours targetting developers
to disable optimisation when building the Cabal library. Cabal tends to
tickle some very bad compiler performance cases (e.g. #16577) so
disabling optimisation here makes a sizeable impact on overall build
time.
See #16817.
|
|
|
|
|
|
|
|
| |
This disables optimisation when building Cabal for Hadrian and
stage0 `ghc-cabal`. Cabal is performance critical in neither case nor
will any performance difference here be visible to the end-user.
See #16817.
|
|
|
|
| |
Skips `executeFile001` test in `threaded2` way. Fixes #16814.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This introduces a new lint job checking for framework failures and
listing broken tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GHC Proposal: 0013-unlifted-newtypes.rst
Discussion: https://github.com/ghc-proposals/ghc-proposals/pull/98
Issues: #15219, #1311, #13595, #15883
Implementation Details:
Note [Implementation of UnliftedNewtypes]
Note [Unifying data family kinds]
Note [Compulsory newtype unfolding]
This patch introduces the -XUnliftedNewtypes extension. When this
extension is enabled, GHC drops the restriction that the field in
a newtype must be of kind (TYPE 'LiftedRep). This allows types
like Int# and ByteArray# to be used in a newtype. Additionally,
coerce is made levity-polymorphic so that it can be used with
newtypes over unlifted types.
The bulk of the changes are in TcTyClsDecls.hs. With -XUnliftedNewtypes,
getInitialKind is more liberal, introducing a unification variable to
return the kind (TYPE r0) rather than just returning (TYPE 'LiftedRep).
When kind-checking a data constructor with kcConDecl, we attempt to
unify the kind of a newtype with the kind of its field's type. When
typechecking a data declaration with tcTyClDecl, we again perform a
unification. See the implementation note for more on this.
Co-authored-by: Richard Eisenberg <rae@richarde.dev>
|
| |
|
|
|
|
|
|
|
|
| |
Each package's object files were 'need'ing the library files of all transitive
dependencies of the current package, whichi is pointless since the said
libraries are not needed until we link those object files together.
This fixes #16759.
|
|
|
|
| |
Fixes #16696
|
|
|
|
|
|
|
| |
Previously we would pass flags intended for the C compiler to the C++
compiler (see #16738). This would cause, for instance, `-std=gnu99` to
be passed to the C++ compiler, causing spurious test failures. Fix this
by maintaining a separate set of flags for C++ compilation invocations.
|
|
|
|
| |
Enable artifacts on to ensure we have bindist coverage.
|
|
|
|
|
| |
This should help alleviate queue times as the LLVM job is one of the
longest that we have.
|
|
|
|
|
|
|
|
| |
Previously we used an awful hybrid batch script/Bourne shell script to
allow this test to run both on Windows and Linux (fixing #9399).
However, this breaks on some libc implementations (e.g. musl). Fix this.
Fixes #16798.
|
|
|
|
| |
Move prepare-system.sh to .gitlab and remove everything else.
|
|
|
|
|
| |
For reasons I don't understand sphinx seems to fail to produce a .idx
file for makeindex.
|
|
|
|
|
|
|
| |
Strangely these were only causing the build to fail in the aarch64-linux
job, despite Sphinx throwing errors in all jobs I checked.
Also changes some `#ifdef`s to `#if defined` to satisfy the linter.
|
|
|
|
|
|
| |
MR !1151 makes the Hadrian/Linux job pass by fixing the last two test failures,
so we can now be stricter and not allow those jobs to fail anymore, easily
letting us see when patches introduce test failures.
|
|
|
|
|
| |
This requires creating RTS library symlinks when registering, outside
of the rule for the registered library file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously the presence of source notes could hide nested applications
of `unpackFoldrCString#` from our constant folding logic. For instance,
consider the expression:
```haskell
unpackFoldrCString# "foo" c (unpackFoldrCString# "baz" c n)
```
Specifically, ticks appearing in two places can defeat the rule:
a. Surrounding the inner application of `unpackFoldrCString#`
b. Surrounding the fold function, `c`
The latter caused the `str_rules` testcase to fail when `base` was built
with `-g3`.
Fixes #16740.
|
|
|
|
|
|
|
| |
`checkUnload` currently doesn't check the info header of static objects.
Thus, it may free an `ObjectCode` struct wrongly even if there's still a
live static object whose info header lies in a mapped section of that
`ObjectCode`. This fixes the issue by adding an appropriate check.
|
|
|
|
|
|
| |
This should finally fix #14261.
[skip ci]
|
|
|
|
| |
Fixes linters.
|
|
|
|
|
|
|
|
|
|
| |
Since we can't load profiled objects when GhcDynamic==YES. Affects:
* T16737
* T16384
* T16718
* T16619
* T16190
|
|
|
|
|
|
|
| |
galois_raytrace was previously broken on i386 due to use of x87
arithmethic on that platform. However,
42504f4a575395a35eec5c3fd7c9ef6e2b54e68e removes x87 support; this
resulted in an unexpected pass. Unmark this test as broken.
|
|
|
|
| |
This test requires FFI usage.
|
|
|
|
|
| |
* Skip process005 in ghci way
* Mark process002 as fragile in threaded2
|
|
|
|
| |
Marks posix002 as fragile in threaded2 way due to #16550.
|
|
|
|
|
| |
The linter now enforces our preference for `#if defined()` and
`#if !defined()`.
|
| |
|