summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Avoid fundep-caused loop in the typecheckerwip/T19415Simon Peyton Jones2021-03-307-47/+178
| | | | | | | | | | | Ticket #19415 showed a nasty typechecker loop, which can happen with fundeps that do not satisfy the coverage condition. This patch fixes the problem. It's described in GHC.Tc.Solver.Interact Note [Fundeps with instances] It's not a perfect solution, as the Note explains, but it's better than the status quo.
* [armv7] PIC by default + [aarch64-linux] T11276 metric increaseMoritz Angermann2021-03-292-1/+2
| | | | | Metric Increase: T11276
* [testsuite/aarch64-darwin] disable T12674Moritz Angermann2021-03-291-1/+3
|
* [testsuite/aarch64] disable T18623Moritz Angermann2021-03-291-1/+6
|
* [armv7] arm32 needs symbols!Moritz Angermann2021-03-292-3/+5
|
* [testlib] ignore strip warningsMoritz Angermann2021-03-291-0/+4
|
* [aarch64-darwin] be very careful of warnings.Moritz Angermann2021-03-291-0/+1
| | | | | | | So we did *not* have the stgCallocBytes prototype, and subsequently the C compiler defaulted to `int` as a return value. Thus generating sxtw instructions for the return value of stgCalloBytes to produce the expected void *.
* [rts] cast return value to struct.Moritz Angermann2021-03-291-1/+1
|
* [linker] no munmap if either agument is invalid.Moritz Angermann2021-03-291-1/+4
|
* [testsuite] Fix SubsectionsViaSymbols testMoritz Angermann2021-03-292-1/+2
|
* [linker/aarch64-elf] support section symbols for GOT relocationMoritz Angermann2021-03-291-1/+7
|
* [linker] align prototype with implementation signature.Moritz Angermann2021-03-291-2/+2
|
* [linker] SymbolExtras are only used on PPC and X86Moritz Angermann2021-03-292-5/+4
|
* [linker] Additional FALLTHROUGH decorations.Moritz Angermann2021-03-291-0/+2
|
* Allocate Adjustors and mark them readable in two stepsMoritz Angermann2021-03-2918-20/+90
| | | | | | | | | This drops allocateExec for darwin, and replaces it with a alloc, write, mark executable strategy instead. This prevents us from trying to allocate an executable range and then write to it, which X^W will prohibit on darwin. This will *only* work if we can use mmap.
* [macho] improved linker with proper plt supportMoritz Angermann2021-03-298-97/+311
| | | | This is a pre-requisite for making aarch64-darwin work.
* Add `MessageClass`, rework `Severity` and add `DiagnosticReason`.wip/adinapoli-message-class-new-designAlfredo Di Napoli2021-03-2980-858/+975
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Other than that: * Fix T16167,json,json2,T7478,T10637 tests to reflect the introduction of the `MessageClass` type * Remove `makeIntoWarning` * Remove `warningsToMessages` * Refactor GHC.Tc.Errors 1. Refactors GHC.Tc.Errors so that we use `DiagnosticReason` for "choices" (defer types errors, holes, etc); 2. We get rid of `reportWarning` and `reportError` in favour of a general `reportDiagnostic`. * Introduce `DiagnosticReason`, `Severity` is an enum: This big commit makes `Severity` a simple enumeration, and introduces the concept of `DiagnosticReason`, which classifies the /reason/ why we are emitting a particular diagnostic. It also adds a monomorphic `DiagnosticMessage` type which is used for generic messages. * The `Severity` is computed (for now) from the reason, statically. Later improvement will add a `diagReasonSeverity` function to compute the `Severity` taking `DynFlags` into account. * Rename `logWarnings` into `logDiagnostics` * Add note and expand description of the `mkHoleError` function
* Replace - with negateOleg Grenrus2021-03-281-2/+2
| | | | It also failed to parse with HLint (I wonder how GHC itself handles it?)
* gitlab-ci: Bump ci-imagesBen Gamari2021-03-281-1/+1
| | | | Upgrades bootstrap GHC to 8.10.4, hopefully avoiding #19600.
* Add UnitId to Target recordFendor2021-03-2828-50/+83
| | | | | | | | | | In the future, we want `HscEnv` to support multiple home units at the same time. This means, that there will be 'Target's that do not belong to the current 'HomeUnit'. This is an API change without changing behaviour. Update haddock submodule to incorporate API changes.
* Rename StrictSig to DmdSig (#19597)Sebastian Graf2021-03-2831-256/+256
| | | | | | | | | | | | | In #19597, we also settled on the following renamings: * `idStrictness` -> `idDmdSig`, `strictnessInfo` -> `dmdSigInfo`, `HsStrictness` -> `HsDmdSig` * `idCprInfo` -> `idCprSig`, `cprInfo` -> `cprSigInfo`, `HsCpr` -> `HsCprSig` Fixes #19597.
* Make RULES more robust in GHC.FloatSimon Peyton Jones2021-03-281-75/+155
| | | | | | | | | | | | | The RULES that use hand-written specialised code for overloaded class methods like floor, ceiling, truncate etc were fragile to certain transformations. This patch makes them robust. See #19582. It's all described in Note [Rules for overloaded class methods]. No test case because currently we don't do the transformation (floating out over-saturated applications) that makes this patch have an effect. But we may so so in future, and this patch makes the RULES much more robust.
* rts: Fix joinOSThread on WindowsBen Gamari2021-03-271-1/+6
| | | | | Previously we were treating the thread ID as a HANDLE, but it is not. We must first OpenThread.
* bump submodule nofibViktor Dukhovni2021-03-271-0/+0
|
* hadrian: build ghc-stageN wrapper when building the stageN:exe:ghc-bin targetAdam Sandberg Ericsson2021-03-261-0/+6
|
* Rubbish literals for all representations (#18983)Sebastian Graf2021-03-2627-390/+538
| | | | | | | | | | | | | | | | | This patch cleans up the complexity around WW's `mk_absent_let` by broadening the scope of `LitRubbish`. Rubbish literals now store the `PrimRep` they represent and are ultimately lowered in Cmm. This in turn allows absent literals of `VecRep` or `VoidRep`. The latter allows absent literals for unlifted coercions, as requested in #18983. I took the liberty to rewrite and clean up `Note [Absent fillers]` and `Note [Rubbish values]` to account for the new implementation and to make them more orthogonal in their description. I didn't add a new regression test, as `T18982` already contains the test in the ticket and its test output changes as expected. Fixes #18983.
* Only update config.sub when it already exists (#19574)Sylvain Henry2021-03-261-1/+2
|
* Bump Win32 to 2.13.0.0GHC GitLab CI2021-03-266-2/+2
| | | | Bumps Win32 submodule.
* Fix lint issueSylvain Henry2021-03-261-1/+1
|
* Bump haddock submoduleSylvain Henry2021-03-261-0/+0
|
* Use foldGet in getSymbolTableSylvain Henry2021-03-263-25/+50
| | | | | | | | | | | Implement @alexbiehl suggestion of using a foldGet function to avoid the creation of an intermediate list while reading the symbol table. Do something similar for reading the Hie symbol table and the interface dictionary. Metric Decrease: T10421
* Remove UniqSupply from NameCacheSylvain Henry2021-03-269-152/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | As suggested by @alexbiehl, this patch replaces the always updated UniqSupply in NameCache with a fixed Char and use it with `uniqFromMask` to generate uniques. This required some refactoring because getting a new unique from the NameCache can't be done in pure code anymore, in particular not in an atomic update function for `atomicModifyIORef`. So we use an MVar instead to store the OrigNameCache field. For some reason, T12545 increases (+1%) on i386 while it decreases on other CI runners. T9630 ghc/peak increases only with the dwarf build on CI (+16%). Metric Decrease: T12425 T12545 T9198 T12234 Metric Increase: T12545 T9630 Update haddock submodule
* Refactor FinderCacheSylvain Henry2021-03-2622-321/+447
|
* Refactor NameCacheSylvain Henry2021-03-2613-198/+186
| | | | | | | | * Make NameCache the mutable one and replace NameCacheUpdater with it * Remove NameCache related code duplicated into haddock Bump haddock submodule
* Refactor interface loadingSylvain Henry2021-03-267-281/+319
| | | | | | | | | | In order to support several home-units and several independent unit-databases, it's easier to explicitly pass UnitState, DynFlags, etc. to interface loading functions. This patch converts some functions using monads such as IfG or TcRnIf with implicit access to HscEnv to use IO instead and to pass them specific fields of HscEnv instead of an HscEnv value.
* Implement -Wmissing-kind-signaturesOleg Grenrus2021-03-2514-10/+297
| | | | Fixes #19564
* EPA: Tidy up some GHC.Parser.Annotation commentswip/az/exactprint-tweak-parser-state-commentGHC GitLab CI2021-03-251-14/+33
| | | | | | This is a follow up from !2418 / #19579 [skip ci]
* EPA : Remove ApiAnn from ParsedModuleGHC GitLab CI2021-03-2529-1438/+202
| | | | | All the comments are now captured in the AST, there is no need for a side-channel structure for them.
* Add compiler linting to CIHécate2021-03-2532-155/+149
| | | | | This commit adds the `lint:compiler` Hadrian target to the CI runner. It does also fixes hints in the compiler/ and libraries/base/ codebases.
* Fix the binder-swap transformation in OccurAnalSimon Peyton Jones2021-03-245-53/+234
| | | | | | | | | | The binder-swap transformation needs to be iterated, as shown by #19581. The fix is pretty simple, and is explained in point (BS2) of Note [The binder-swap substitution]. Net effect: - sometimes, fewer simplifier iterations - sometimes, more case merging
* hadrian: remove alex and happy from build-toolsAdam Sandberg Ericsson2021-03-241-2/+0
| | | | | | | | | Hadrian doesn't actually depend on them as built-tools and normal usage where you want to compile GHC will pick up the tools before you run hadrian via the ./configure script. Not building an extra copy of alex and happy might also improve overall build-times when building from scratch.
* STG AST - Make ConstructorNumber always a field.Andreas Klebinger2021-03-243-11/+5
| | | | | | | | It's used by all passes and already used as a regular field. So I figured it would be both more consistent and performant to make it a regular field for all constructors. I also added a few bangs in the process.
* CmmToAsm.Reg.Linear: oneShot-ify RegMwip/ncg-perfBen Gamari2021-03-241-16/+22
| | | | | | | | | | | | | ------------------------- Metric Decrease: T783 T4801 T12707 T13379 T3294 T4801 T5321FD -------------------------
* CmmToAsm.Reg.Linear: Use concat rather than repeated (++)Ben Gamari2021-03-241-2/+1
|
* EPA: Run exactprint transformation tests as part of CIGHC GitLab CI2021-03-2385-1211/+1289
| | | | | | | | | | EPA == exact print annotations. When !2418 landed, it did not run the tests brought over from ghc-exactprint for making sure the AST prints correctly efter being edited. This enables those tests.
* gitlab-ci: Rework handling of head.hackage job triggerBen Gamari2021-03-232-88/+9
| | | | | | | | GitLab 12.3 now has reasonable support [1] for cross-project job dependencies, allowing us to drop the awful hack of a shell script we used previously. [1] https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#mirroring-status-from-triggered-pipeline
* Move loader state into InterpSylvain Henry2021-03-2321-579/+649
| | | | | | | | | | | | | | | | | | The loader state was stored into HscEnv. As we need to have two interpreters and one loader state per interpreter in #14335, it's natural to make the loader state a field of the Interp type. As a side effect, many functions now only require a Interp parameter instead of HscEnv. Sadly we can't fully free GHC.Linker.Loader of HscEnv yet because the loader is initialised lazily from the HscEnv the first time it is used. This is left as future work. HscEnv may not contain an Interp value (i.e. hsc_interp :: Maybe Interp). So a side effect of the previous side effect is that callers of the modified functions now have to provide an Interp. It is satisfying as it pushes upstream the handling of the case where HscEnv doesn't contain an Interpreter. It is better than raising a panic (less partial functions, "parse, don't validate", etc.).
* rts: Use long-path-aware statBen Gamari2021-03-233-4/+11
| | | | | | | | Previously `pathstat` relied on msvcrt's `stat` implementation, which was not long-path-aware. It should rather be defined in terms of the `stat` implementation provided by `utils/fs`. Fixes #19541.
* PPC NCG: Fix int to float conversionPeter Trommler2021-03-231-6/+26
| | | | | | | | In commit 540fa6b2 integer to float conversions were changed to round to the nearest even. Implement a special case for 64 bit integer to single precision floating point numbers. Fixes #19563.
* More improvement to MonoLocalBinds documentationSimon Peyton Jones2021-03-231-50/+35
|