Commits on Source (41)
-
Also remove -Wnoncanonical-{monoid,monad}-instances from -Wcompat, since they are enabled by default. Refresh wcompat-warnings/ test with new -Wcompat warnings. Part of #24267 Co-authored-by:
sheaf <sam.derbyshire@gmail.com>
eaf8a06d -
In #24296, we had a program in which we eta expanded away an error despite the presence of `-fpedantic-bottoms`. This was caused by turning called *at least once* lambdas into one-shot lambdas, while with `-fpedantic-bottoms` it is only sound to eta expand over lambdas that are called *exactly* once. An example can be found in `Note [Combining arity type with demand info]`. Fixes #24296.
42bee5aa -
Fixes #24311
7e95f738 -
e43788d0
-
When looking up a value, we want to be able to find both variables and record fields. So we should not use the lookupSameOccRn_maybe function, as we can't know ahead of time which record field namespace a record field with the given textual name will belong to. Fixes #24293
c5fc7304 -
* Detect undefined labels. This can be tested by adding :ref:`nonexistent` to a documentation rst file; attempting to build docs will fail. Fixed the undefined label in `9.8.1-notes.rst`. * Detect errors. While we have plenty of warnings, we can at least enforce that Sphinx does not report errors. Fixed the error in `required_type_arguments.rst`. Unrelated change: I have documented that the `-dlint` enables `-fcatch-nonexhaustive-cases`, as can be verified by checking `enableDLint`.
da908790 -
We were missing the extra_comma from the calculation of the size of the payload of postIPE. This was causing assertion failures when the event would overflow the buffer by one byte, as ensureRoomForVariable event would report there was enough space for `n` bytes but then we would write `n + 1` bytes into the buffer. Fixes #24287
5776008c -
This MR makes three improvements to SpecConstr: see #24282 * It fixes an outright (and recently-introduced) bug in `betterPat`, which was wrongly forgetting to compare the lengths of the argument lists. * It enhances ConVal to inclue a boolean for work-free-ness, so that the envt can contain non-work-free constructor applications, so that we can do more: see Note [ConVal work-free-ness] * It rejigs `subsumePats` so that it doesn't reverse the list. This can make a difference because, when patterns overlap, we arbitrarily pick the first. There is no "right" way, but this retains the old pre-subsumePats behaviour, thereby "fixing" the regression in #24282. Nofib results +======================================== | spectral/ansi -21.14% | spectral/hartel/comp_lab_zift -0.12% | spectral/hartel/parstof +0.09% | spectral/last-piece -2.32% | spectral/multiplier +6.03% | spectral/para +0.60% | spectral/simple -0.26% +======================================== | geom mean -0.18% +---------------------------------------- The regression in `multiplier` is sad, but it simply replicates GHC's previous behaviour (e.g. GHC 9.6).
66dc09b1 -
The comment claims that `simpleUserHooks` decrease verbosity, and it does, but only for the `postConf` phase. The other phases are too verbose with `-V`. At the moment > 5000 lines of the build log are devoted to output from `cabal copy`. So I take the simple approach and just decrease the verbosity level again. If the output of `postConf` is essential then it would be better to implement our own `UserHooks` which doesn't decrease the verbosity for `postConf`. Fixes #24338
65da79b3 -
Each phase of the simplifier typically rewrites the majority of ModGuts, so we want to be able to release the old ModGuts as soon as possible. `name_ppr_ctxt` lives throught the whole optimiser phase and it was retaining a reference to `ModGuts`, so we were failing to release the old `ModGuts` until the end of the phase (potentially doubling peak memory usage for that particular phase). This was discovered using eras profiling (#24332) Fixes #24328
16414d7d -
7f0879e1
-
Cheng Shao authored320454d3
-
Cheng Shao authored
On posix platforms, when performing read/write on FDs, we check the nonblocking flag first. For FDs without this flag (e.g. stdout), we call fdReady() first, which in turn calls poll() to wait for I/O to be available on that FD. This is problematic for wasm32-wasi: although select()/poll() is supported via the poll_oneoff() wasi syscall, that syscall is rather heavyweight and runtime behavior differs in different wasi implementations. The issue is even worse when targeting browsers, given there's no satisfactory way to implement async I/O as a synchronous syscall, so existing JS polyfills for wasi often give up and simply return ENOSYS. Before we have a proper I/O manager that avoids poll_oneoff() for async I/O on wasm, this patch improves the status quo a lot by merely pretending all FDs are "nonblocking". Read/write on FDs will directly invoke read()/write(), which are much more reliably handled in existing wasi implementations, especially those in browsers. Fixes #23275 and the following test cases: T7773 isEOF001 openFile009 T4808 cgrun025 Approved by CLC proposal #234: https://github.com/haskell/core-libraries-committee/issues/234
2eca52b4 -
These bugs are all described in #24335 It's not easy to provoke the bug, hence no test case.
c4078f2f -
Fixes #24171.
119586ea -
Go through compiler/ sources, and remove all BangPatterns (and other GHC2021 enabled extensions in these files).
9718d970 -
Also remove the hence unused testsuite option `--test-package-db`. Fixes #24342
3ef71669 -
Just a small refactoring to avoid redundantly specifying the same strings in two different places.
09875f48 -
This patch is a preparation for @a-binders implementation. We have to accept SigmaType in matchExpectedFunTys function to implement them. To achieve that, I made skolemization more lazy. This leads to - Changing tcPolyCheck function. Now it collects skolemised type variables and passes a list of them into tc_match_fun, so they could be used as [ExpPatType] with @-binsers. - Changing tcExprSig function, so now it only skolemises signature if there is `ScopedTypeVariables` extension enabled. - Changing tcPolyExpr function. Now it goes deeper into type if type actually is 1) HsPar 2) HsLam In all other cases tcPolyExpr immediately skolemises a type as it was previously. These changes would allow lambdas to accept invisible type arguments in the most interesting contexts.
167f7a13 -
9a25f15a
-
eb9db834
-
Simon Peyton Jones authored
..based on conversations with Vlad and Ricahrd Proper commit message yet to come...
88e005ea -
Simon Peyton Jones authoredf5f272f5
-
Simon Peyton Jones authoredc24e95bf
-
Simon Peyton Jones authored209b68f9
-
Simon Peyton Jones authored95cbb12f
-
Simon Peyton Jones authored0d8fc0b4
-
Simon Peyton Jones authored56fab8f5
-
Simon Peyton Jones authored565cf745
-
Simon Peyton Jones authoredf8ccf7f9
-
Simon Peyton Jones authored90ca84fd
-
Simon Peyton Jones authored0ca79b1e
-
Simon Peyton Jones authorede6137c61
-
Simon Peyton Jones authored6bdfce57
-
Simon Peyton Jones authored0757e7b8
-
Simon Peyton Jones authored
Thanks @sheaf and @sand-wich
29eeca87
Showing
- .gitlab-ci.yml 1 addition, 1 deletion.gitlab-ci.yml
- compiler/GHC/Cmm/CLabel.hs 0 additions, 5 deletionscompiler/GHC/Cmm/CLabel.hs
- compiler/GHC/Cmm/CommonBlockElim.hs 1 addition, 1 deletioncompiler/GHC/Cmm/CommonBlockElim.hs
- compiler/GHC/Cmm/ContFlowOpt.hs 0 additions, 1 deletioncompiler/GHC/Cmm/ContFlowOpt.hs
- compiler/GHC/Cmm/Dataflow.hs 0 additions, 4 deletionscompiler/GHC/Cmm/Dataflow.hs
- compiler/GHC/Cmm/Dataflow/Graph.hs 0 additions, 4 deletionscompiler/GHC/Cmm/Dataflow/Graph.hs
- compiler/GHC/Cmm/Expr.hs 0 additions, 4 deletionscompiler/GHC/Cmm/Expr.hs
- compiler/GHC/Cmm/Graph.hs 1 addition, 1 deletioncompiler/GHC/Cmm/Graph.hs
- compiler/GHC/Cmm/Info/Build.hs 3 additions, 7 deletionscompiler/GHC/Cmm/Info/Build.hs
- compiler/GHC/Cmm/LayoutStack.hs 1 addition, 1 deletioncompiler/GHC/Cmm/LayoutStack.hs
- compiler/GHC/Cmm/Liveness.hs 0 additions, 3 deletionscompiler/GHC/Cmm/Liveness.hs
- compiler/GHC/Cmm/MachOp.hs 1 addition, 1 deletioncompiler/GHC/Cmm/MachOp.hs
- compiler/GHC/Cmm/Node.hs 0 additions, 6 deletionscompiler/GHC/Cmm/Node.hs
- compiler/GHC/Cmm/Pipeline.hs 0 additions, 1 deletioncompiler/GHC/Cmm/Pipeline.hs
- compiler/GHC/Cmm/ProcPoint.hs 0 additions, 1 deletioncompiler/GHC/Cmm/ProcPoint.hs
- compiler/GHC/Cmm/Utils.hs 1 addition, 2 deletionscompiler/GHC/Cmm/Utils.hs
- compiler/GHC/CmmToAsm.hs 0 additions, 6 deletionscompiler/GHC/CmmToAsm.hs
- compiler/GHC/CmmToAsm/AArch64/CodeGen.hs 1 addition, 5 deletionscompiler/GHC/CmmToAsm/AArch64/CodeGen.hs
- compiler/GHC/CmmToAsm/CFG/Dominators.hs 0 additions, 4 deletionscompiler/GHC/CmmToAsm/CFG/Dominators.hs
- compiler/GHC/CmmToAsm/Reg/Graph/Stats.hs 0 additions, 5 deletionscompiler/GHC/CmmToAsm/Reg/Graph/Stats.hs