summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Remove redundant imports and pragmaswip/T21225Peter Trommler2022-04-101-12/+0
|
* Remove dangling reference to deleted notePeter Trommler2022-04-091-2/+1
|
* NCG Remove pprASCIIPeter Trommler2022-04-091-55/+0
|
* NCG: Print strings as C stringsPeter Trommler2022-04-091-1/+2
|
* Tiny documentation wibbleSimon Peyton Jones2022-04-081-2/+2
| | | | | | | | | | | | This commit commit 83363c8b04837ee871a304cf85207cf79b299fb0 Author: Simon Peyton Jones <simon.peytonjones@gmail.com> Date: Fri Mar 11 16:55:38 2022 +0000 Use prepareBinding in tryCastWorkerWrapper refactored completeNonRecX away, but left a Note referring to it. This MR fixes that Note.
* Disallow (->) as a data constructor name (#16999)Vladislav Zavialov2022-04-084-3/+11
| | | | | | | | | | | | | | The code was misusing isLexCon, which was never meant for validation. In fact, its documentation states the following: Use these functions to figure what kind of name a 'FastString' represents; these functions do /not/ check that the identifier is valid. Ha! This sign can't stop me because I can't read. The fix is to use okConOcc instead. The other checks (isTcOcc or isDataOcc) seem superfluous, so I also removed those.
* ci: Replace "always" with "on_success" to stop build jobs running before ↵Matthew Pickering2022-04-082-64/+64
| | | | | | | | | hadrian-ghci has finished See https://docs.gitlab.com/ee/ci/yaml/#when * always means, always run not matter what * on_success means, run if the dependencies have built successfully
* Docs: datacon eta-expansion, rep-poly checkssheaf2022-04-088-37/+111
| | | | | | | | | | | | | | | | | | | The existing notes weren't very clear on how the eta-expansion of data constructors that occurs in tcInferDataCon/dsConLike interacts with the representation polymorphism invariants. So we explain with a few more details how we ensure that the representation-polymorphic lambdas introduced by tcInferDataCon/dsConLike don't end up causing problems, by checking they are properly instantiated and then relying on the simple optimiser to perform beta reduction. A few additional changes: - ConLikeTc just take type variables instead of binders, as we never actually used the binders. - Removed the FRRApp constructor of FRROrigin; it was no longer used now that we use ExpectedFunTyOrigin. - Adds a bit of documentation to the constructors of ExpectedFunTyOrigin.
* HsUniToken for :: in GADT constructors (#19623)Vladislav Zavialov2022-04-0814-18/+74
| | | | | | One more step towards the new design of EPA. Updates the haddock submodule.
* Add flag -fprof-manual which controls if GHC should honour manual cost centres.Andreas Klebinger2022-04-088-1/+61
| | | | | | | This allows disabling of manual control centres in code a user doesn't control like libraries. Fixes #18867
* driver: Introduce HomeModInfoCache abstractionMatthew Pickering2022-04-084-35/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The HomeModInfoCache is a mutable cache which is updated incrementally as the driver completes, this makes it robust to exceptions including (SIGINT) The interface for the cache is described by the `HomeMOdInfoCache` data type: ``` data HomeModInfoCache = HomeModInfoCache { hmi_clearCache :: IO [HomeModInfo] , hmi_addToCache :: HomeModInfo -> IO () } ``` The first operation clears the cache and returns its contents. This is designed so it's harder to end up in situations where the cache is retained throughout the execution of upsweep. The second operation allows a module to be added to the cache. The one slightly nasty part is in `interpretBuildPlan` where we have to be careful to ensure that the cache writes happen: 1. In parralel 2. Before the executation continues after upsweep. This requires some simple, localised MVar wrangling. Fixes #20780
* Merge remote-tracking branch 'origin/master'Ben Gamari2022-04-0857-323/+1174
|\
| * Reject illegal quote mark in data con declarations (#17865)Vladislav Zavialov2022-04-085-4/+42
| | | | | | | | | | | | * Non-fatal (i.e. recoverable) parse error * Checking infix constructors * Extended the regression test
| * Correctly report SrcLoc of redundant constraintssheaf2022-04-086-9/+32
| | | | | | | | | | | | | | | | | | We were accidentally dropping the source location information in certain circumstances when reporting redundant constraints. This patch makes sure that we set the TcLclEnv correctly before reporting the warning. Fixes #21315
| * Fixes to 9.4 release notesKrzysztof Gogolewski2022-04-084-11/+23
| | | | | | | | | | | | - Mention -Wforall-identifier - Improve description of withDict - Fix formatting
| * testsuite: Lint RTS #includesBen Gamari2022-04-083-1/+99
| | | | | | | | | | | | | | | | | | | | | | Verifies two important properties of #includes in the RTS: * That system headers don't appear inside of a `<BeginPrivate.h>` block as this can hide system library symbols, resulting in very hard-to-diagnose linker errors * That no headers precede `Rts.h`, ensuring that __USE_MINGW_ANSI_STDIO is set correctly before system headers are included.
| * rts: Fix various #include issuesBen Gamari2022-04-0816-30/+28
| | | | | | | | This fixes various violations of the newly-added RTS includes linter.
| * rts: Move __USE_MINGW_ANSI_STDIO definition to PosixSource.hBen Gamari2022-04-082-12/+12
| | | | | | | | It's easier to ensure that this is included first than Rts.h
| * Add test for #21338sheaf2022-04-083-0/+74
| | | | | | | | | | | | | | | | This no-skolem-info bug was fixed by the no-skolem-info patch that will be part of GHC 9.4. This patch adds a regression test for the issue reported in issue #21338. Fixes #21338.
| * Improve seq[D]VarSetSimon Jakobi2022-04-081-2/+2
| | | | | | | | | | | | Previously, the use of size[D]VarSet would involve a traversal of the entire underlying IntMap. Since IntMaps are already spine-strict, this is unnecessary.
| * Properly explain where INLINE pragmas can appear.Andreas Klebinger2022-04-071-6/+41
| | | | | | | | Fixes #20676
| * Fix the free-var test in validDerivPredSimon Peyton Jones2022-04-074-57/+74
| | | | | | | | | | | | | | | | | | | | The free-var test (now documented as (VD3)) was too narrow, affecting only class predicates. #21302 demonstrated that this wasn't enough! Fixes #21302. Co-authored-by: Ryan Scott <ryan.gl.scott@gmail.com>
| * Rename [] to List (#21294)Vladislav Zavialov2022-04-0722-46/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements a small part of GHC Proposal #475. The key change is in GHC.Types: - data [] a = [] | a : [a] + data List a = [] | a : List a And the rest of the patch makes sure that List is pretty-printed as [] in various contexts. Updates the haddock submodule.
| * Use prepareBinding in tryCastWorkerWrapperSimon Peyton Jones2022-04-076-164/+213
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As #21144 showed, tryCastWorkerWrapper was calling prepareRhs, and then unconditionally floating the bindings, without the checks of doFloatFromRhs. That led to floating an unlifted binding into a Rec group. This patch refactors prepareBinding to make these checks, and do them uniformly across all calls. A nice improvement. Other changes * Instead of passing around a RecFlag and a TopLevelFlag; and sometimes a (Maybe SimplCont) for join points, define a new Simplifier-specific data type BindContext: data BindContext = BC_Let TopLevelFlag RecFlag | BC_Join SimplCont and use it consistently. * Kill off completeNonRecX by inlining it. It was only called in one place. * Add a wrapper simplImpRules for simplRules. Compile time on T9630 drops by 4.7%; little else changes. Metric Decrease: T9630
| * EPA: handling of con_bndrs in mkGadtDeclAlan Zimmerman2022-04-073-21/+571
| | | | | | | | | | | | Get rid of unnnecessary case clause that always matched. Closes #20558
| * Remove Fun pattern from Typeable COMPLETE setsheaf2022-04-073-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | GHC merge request !963 improved warnings in the presence of COMPLETE annotations. This allows the removal of the Fun pattern from the complete set. Doing so expectedly causes some redundant pattern match warnings, in particular in GHC.Utils.Binary.Typeable and Data.Binary.Class from the binary library; this commit addresses that. Updates binary submodule Fixes #20230
* | rts: Fix off-by-one in snwprintf usagewip/windows-finalwip/windows-clang-joinBen Gamari2022-04-071-2/+5
| |
* | Accept spurious perf test shifts on WindowsBen Gamari2022-04-070-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Metric Decrease: T16875 Metric Increase: T12707 T13379 T3294 T4801 T5321FD T5321Fun T783
* | rts: Fallback to ucrtbase not msvcrtBen Gamari2022-04-071-3/+4
| | | | | | | | | | Since we have switched to Clang the toolchain now links against ucrt rather than msvcrt.
* | rts/CloneStack: Ensure that Rts.h is #included firstBen Gamari2022-04-071-2/+2
| | | | | | | | As is necessary on Windows.
| |
| \
| \
| \
*---. \ Merge branches 'wip/windows-high-codegen', 'wip/windows-high-linker', ↵Ben Gamari2022-04-0791-1240/+1585
|\ \ \ \ | | | | | | | | | | | | | | | 'wip/windows-clang-2' and 'wip/lint-rts-includes' into wip/windows-clang-join
| | | * | testsuite: Lint RTS #includeswip/lint-rts-includesBen Gamari2022-04-063-1/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Verifies two important properties of #includes in the RTS: * That system headers don't appear inside of a `<BeginPrivate.h>` block as this can hide system library symbols, resulting in very hard-to-diagnose linker errors * That no headers precede `Rts.h`, ensuring that __USE_MINGW_ANSI_STDIO is set correctly before system headers are included.
| | | * | rts: Fix various #include issuesBen Gamari2022-04-0616-30/+28
| | | | | | | | | | | | | | | | | | | | This fixes various violations of the newly-added RTS includes linter.
| | | * | rts: Move __USE_MINGW_ANSI_STDIO definition to PosixSource.hBen Gamari2022-04-062-12/+12
| | | |/ | | | | | | | | | | | | It's easier to ensure that this is included first than Rts.h
| | * | testsuite: Mark T9405 as broken on WindowsBen Gamari2022-04-071-1/+1
| | | | | | | | | | | | | | | | Due to #21361.
| | * | testsuite: Mark linker unloading tests as broken on WindowsBen Gamari2022-04-072-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Due to #20354. We will need to investigate this prior the release.
| | * | testsuite: Mark T20918 as broken on WindowsBen Gamari2022-04-071-4/+5
| | | | | | | | | | | | | | | | Our toolchain on Windows doesn't currently have Windows support.
| | * | testsuite: Update expected output from T5435 tests on WindowsBen Gamari2022-04-072-1/+3
| | | | | | | | | | | | | | | | | | | | I'll admit, I don't currently see *why* this output is reordered but it is a fairly benign difference and I'm out of time to investigate.
| | * | testsuite: Fix exit code of bounds checking tests on WindowsBen Gamari2022-04-071-1/+1
| | | | | | | | | | | | | | | | `abort` exits with 255, not 134, on Windows.
| | * | rts: Adjust RTS symbol table on Windows for ucrtBen Gamari2022-04-072-5/+5
| | | |
| | * | configure: Make environ decl check more robustBen Gamari2022-04-074-4/+25
| | | | | | | | | | | | | | | | | | | | Some platforms (e.g. Windows/clang64) declare `environ` in `<stdlib.h>`, not `<unistd.h>`
| | * | rts: Add missing newline in error messageBen Gamari2022-04-071-1/+1
| | | |
| | * | rts: Refactor and fix printf attributes on clangBen Gamari2022-04-073-26/+15
| | | | | | | | | | | | | | | | | | | | Clang on Windows does not understand the `gnu_printf` attribute; use `printf` instead.
| | * | testsuite: Mark T10420 as broken on WindowsBen Gamari2022-04-072-2/+3
| | | | | | | | | | | | | | | | Due to #21322.
| | * | testsuite: Mark TH_spliceE5_prof as unbroken on WindowsBen Gamari2022-04-061-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It was previously failing due to #18721 and now passes with the new toolchain. Closes #18721.
| | * | linker/PEi386: More descriptive error messageBen Gamari2022-04-061-1/+1
| | | |
| | * | hadrian: Build wrappers using ghc rather than ccBen Gamari2022-04-061-2/+2
| | | |
| | * | Bump text submoduleBen Gamari2022-04-061-0/+0
| | | |
| | * | Bump bytestring submoduleBen Gamari2022-04-061-0/+0
| | | |
| | * | hadrian: Disable ghci libraries when object merging is not availableBen Gamari2022-04-063-5/+19
| | | |