summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* [linker] Adds void printLoadedObjects(void);wip/angerman/print-loaded-objectsMoritz Angermann2020-06-042-2/+30
| | | | | | This allows us to dump in-memory object code locations for debugging. Fixup printLoadedObjects prototype
* compiler: Disable use of process jobs with process < 1.6.9Ben Gamari2020-06-041-3/+7
| | | | Due to #17926.
* rts: Add Windows-specific implementation of rtsSleepBen Gamari2020-06-041-2/+9
| | | | | | | | | Previously we would use the POSIX path, which uses `nanosleep`. However, it turns out that `nanosleep` is provided by `libpthread` on Windows. In general we don't want to incur such a dependency. Avoid this by simply using `Sleep` on Windows. Fixes #18272.
* Add test for #17669nineonine2020-06-043-0/+14
|
* GHC.Hs.Instances: Compile with -O0Ben Gamari2020-06-041-0/+7
| | | | | | | This module contains exclusively Data instances, which are going to be slow no matter what we do. Furthermore, they are incredibly slow to compile with optimisation (see #9557). Consequently we compile this with -O0. See #18254.
* Fix documentation on type families not being extractedLuke Lau2020-06-043-12/+18
| | | | | | | It looks like the location of the Names used for CoAxioms on type families are now located at their type constructors. Previously, Docs.hs thought the Names were located in the RHS, so the RealSrcSpan in the instanceMap and getInstLoc didn't match up. Fixes #18241
* Allow finalizeForeignPtr to be called on FinalPtr/PlainPtr.Andrew Martin2020-06-041-2/+4
| | | | | | | | MR 2165 (commit 49301ad6226d9a83d110bee8c419615dd94f5ded) regressed finalizeForeignPtr by throwing exceptions when PlainPtr was encounterd. This regression did not make it into a release of GHC. Here, the original behavior is restored, and FinalPtr is given the same treatment as PlainPtr.
* docs: Add more details on InterruptibleFFI.Niklas Hambüchen2020-06-041-7/+34
| | | | | Details from https://gitlab.haskell.org/ghc/ghc/issues/8684 and https://github.com/takano-akio/filelock/pull/7#discussion_r280332430
* Clean up boot vs non-boot disambiguating typesJohn Ericson2020-06-0430-206/+324
| | | | | | | | | | | | | | | We often have (ModuleName, Bool) or (Module, Bool) pairs for "extended" module names (without or with a unit id) disambiguating boot and normal modules. We think this is important enough across the compiler that it deserves a new nominal product type. We do this with synnoyms and a functor named with a `Gen` prefix, matching other newly created definitions. It was also requested that we keep custom `IsBoot` / `NotBoot` sum type. So we have it too. This means changing many the many bools to use that instead. Updates `haddock` submodule.
* gitlab-ci: Allow ARMv7 job to failBen Gamari2020-06-031-0/+3
| | | | Due to #18298.
* gitlab-ci: Ensure that workaround for #18280 applies to bindisttestBen Gamari2020-06-021-1/+3
| | | | | We need to ensure that the `configure` flags working around #18280 are propagated to the bindisttest `configure` as well.
* gitlab-ci: Disable use of ld.lld on ARMv7wip/T18280Ben Gamari2020-06-011-1/+3
| | | | | | | | | It turns out that lld non-deterministically fails on ARMv7. I suspect this may be due to the a kernel regression as this only started happening when we upgraded to 5.4. Nevertheless, easily avoided by simply sticking with gold. Works around #18280.
* Improve parser error messages for TemplateHaskellQuotesVladislav Zavialov2020-06-014-4/+18
| | | | | | | | While [e| |], [t| |], [d| |], and so on, steal syntax from list comprehensions, [| |] and [|| ||] do not steal any syntax. Thus we can improve error messages by always accepting them in the lexer. Turns out the renamer already performs necessary validation.
* Improve parser error messages for TypeApplicationsVladislav Zavialov2020-06-0111-25/+48
| | | | | | | | | | | | | | With this patch, we always parse f @t as a type application, thereby producing better error messages. This steals two syntactic forms: * Prefix form of the @-operator in expressions. Since the @-operator is a divergence from the Haskell Report anyway, this is not a major loss. * Prefix form of @-patterns. Since we are stealing loose infix form anyway, might as well sacrifice the prefix form for the sake of much better error messages.
* Improve parser error messages for the @-operatorVladislav Zavialov2020-06-018-2/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since GHC diverges from the Haskell Report by allowing the user to define (@) as an infix operator, we better give a good error message when the user does so unintentionally. In general, this is rather hard to do, as some failures will be discovered only in the renamer or the type checker: x :: (Integer, Integer) x @ (a, b) = (1, 2) This patch does *not* address this general case. However, it gives much better error messages when the binding is not syntactically valid: pairs xs @ (_:xs') = zip xs xs' Before this patch, the error message was rather puzzling: <interactive>:1:1: error: Parse error in pattern: pairs After this patch, the error message includes a hint: <interactive>:1:1: error: Parse error in pattern: pairs In a function binding for the ‘@’ operator. Perhaps you meant an as-pattern, which must not be surrounded by whitespace
* Hadrian: fix binary-dist target for cross-compilationSylvain Henry2020-06-011-5/+8
|
* Rename the singleton tuple GHC.Tuple.Unit to GHC.Tuple.SoloTom Ellis2020-06-0122-87/+89
|
* Modify file paths to module paths for new module hierarchyTakenobu Tani2020-06-0120-24/+24
| | | | | | | | | | | | | | | | | | | This updates comments only. This patch replaces module references according to new module hierarchy [1][2]. For files under the `compiler/` directory, I replace them as module paths instead of file paths. For instance, `GHC.Unit.State` instead of `compiler/GHC/Unit/State.hs` [3]. For current and future haddock's markup, this patch encloses the module name with "" [4]. [1]: https://gitlab.haskell.org/ghc/ghc/-/wikis/Make-GHC-codebase-more-modular [2]: https://gitlab.haskell.org/ghc/ghc/issues/13009 [3]: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3375#note_276613 [4]: https://haskell-haddock.readthedocs.io/en/latest/markup.html#linking-to-modules
* Clean up file paths for new module hierarchyTakenobu Tani2020-06-0140-51/+51
| | | | | | | | | This updates comments only. This patch replaces file references according to new module hierarchy. See also: * https://gitlab.haskell.org/ghc/ghc/-/wikis/Make-GHC-codebase-more-modular * https://gitlab.haskell.org/ghc/ghc/issues/13009
* testsuite: Work around spurious mypy failureBen Gamari2020-06-011-1/+1
|
* testsuite/testutil: Fix bytes/str mismatchBen Gamari2020-06-011-1/+1
|
* testsuite/perf_notes: Fix ill-typed assignmentsBen Gamari2020-06-011-4/+5
|
* testsuite: Refactor ghostscript detectionBen Gamari2020-06-013-25/+45
| | | | Tamar reported that he saw crashes due to unhandled exceptions.
* testsuite: Don't fail if we can't unlink __symlink_testBen Gamari2020-06-011-1/+4
| | | | | Afterall, it's possible we were unable to create it due to lack of symlink permission.
* configure: Modify aclocal.m4 according to new module hierarchyTakenobu Tani2020-06-011-2/+2
| | | | | | | | | | | | | This patch updates file paths according to new module hierarchy [1]: * Rename: * compiler/GHC/Parser.hs <= compiler/parser/Parser.hs * compiler/GHC/Parser/Lexer.hs <= compiler/Parser/Lexer.hs * Add: * compiler/GHC/Cmm/Lexer.hs [1]: https://gitlab.haskell.org/ghc/ghc/-/wikis/Make-GHC-codebase-more-modular
* Fix wording in documentationJeremy Schlatter2020-06-011-1/+0
| | | | | The duplicate "orphan instance" phrase here doesn't make sense, and was probably an accident.
* Lint rhs of IfaceRulefendor2020-06-011-2/+21
|
* Add `isInScope` check to `lintCoercion`fendor2020-06-011-1/+6
| | | | Mirrors the behaviour of `lintType`.
* Apply suggestion to libraries/base/GHC/Exts.hsBodigrim2020-06-011-1/+1
|
* Clarify description of fromListNBodigrim2020-06-011-5/+6
|
* nonmoving: Optimise log2_ceilBen Gamari2020-06-011-7/+1
|
* Winferred-safe-imports: Do not exit with errorKirill Elagin2020-06-011-1/+1
| | | | | | | | Currently, when -Winferred-safe-imports is enabled, even when it is not turned into an error, the compiler will still exit with exit code 1 if this warning was emitted. Make sure it is really treated as a warning.
* HsToCore: Eta expand left sectionsBen Gamari2020-06-012-26/+65
| | | | | | | | Strangely, the comment next to this code already alluded to the fact that even simply eta-expanding will sacrifice laziness. It's quite unclear how we regressed so far. See #18151.
* testsuite: Add test for desugaring of PostfixOperatorsBen Gamari2020-06-013-0/+8
|
* testsuite: Add test for #18151Ben Gamari2020-06-013-0/+12
|
* Always zero shrunk mutable array slop when profilingDaniel Gröber2020-06-011-5/+26
| | | | | | | | | When shrinking arrays in the profiling way we currently don't always zero the leftover slop. This means we can't traverse such closures in the heap profiler. The old Note [zeroing slop] and #8402 have some rationale for why this is so but I belive the reasoning doesn't apply to mutable closures. There users already have to ensure multiple threads don't step on each other's toes so zeroing should be safe.
* Fix OVERWRITING_CLOSURE assuming closures are not inherently usedDaniel Gröber2020-06-011-21/+17
| | | | | | The new ASSERT in LDV_recordDead() was being tripped up by MVars when removeFromMVarBlockedQueue() calls OVERWRITING_CLOSURE() via OVERWRITE_INFO().
* Cleanup OVERWRITING_CLOSURE logicDaniel Gröber2020-06-015-43/+62
| | | | | | | | | | | The code is just more confusing than it needs to be. We don't need to mix the threaded check with the ldv profiling check since ldv's init already checks for this. Hence they can be two separate checks. Taking the sanity checking into account is also cleaner via DebugFlags.sanity. No need for checking the DEBUG define. The ZERO_SLOP_FOR_LDV_PROF and ZERO_SLOP_FOR_SANITY_CHECK definitions the old code had also make things a lot more opaque IMO so I removed those.
* Simplify contexts in GHC.Iface.Ext.AstZubin Duggal2020-05-301-315/+238
|
* Windows: Bump Windows toolchain to 0.2Ben Gamari2020-05-301-1/+1
|
* Optimize GHC.Utils.Monad.Andreas Klebinger2020-05-301-12/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many functions in this module are recursive and as such are marked loop breakers. Which means they are unlikely to get an unfolding. This is *bad*. We always want to specialize them to specific Monads. Which requires a visible unfolding at the use site. I rewrote the recursive ones from: foo f x = ... foo x' ... to foo f x = go x where go x = ... As well as giving some pragmas to make all of them available for specialization. The end result is a reduction of allocations of about -1.4% for nofib/spectral/simple/Main.hs when compiled with `-O`. ------------------------- Metric Decrease: T12425 T14683 T5631 T9233 T9675 T9961 WWRec -------------------------
* PPC NCG: Fix .size directive on powerpc64 ELF v1Peter Trommler2020-05-301-1/+6
| | | | | | Thanks to Sergei Trofimovich for pointing out the issue. Fixes #18237
* rts: Drop compatibility shims for Windows VistaBen Gamari2020-05-304-53/+10
| | | | | We can now assume that the thread and processor group interfaces are available.
* users-guide: Note change in getNumProcessors in users guideBen Gamari2020-05-302-3/+8
|
* rts: Teach getNumProcessors to return available processorsBen Gamari2020-05-302-11/+35
| | | | | | | | | | | | Previously we would report the number of physical processors, which can be quite wrong in a containerized setting. Now we rather return how many processors are in our affinity mask when possible. I also refactored the code to prefer platform-specific since this will report logical CPUs instead of physical (using `machdep.cpu.thread_count` on Darwin and `cpuset_getaffinity` on FreeBSD). Fixes #14781.
* PPC NCG: No per-symbol .section ".toc" directivesPeter Trommler2020-05-291-2/+0
| | | | | | | | | All position independent symbols are collected during code generation and emitted in one go. Prepending each symbol with a .section ".toc" directive is redundant. This patch drops the per-symbol directives leading to smaller assembler files. Fixes #18250
* Build a threaded stage 1 if the bootstrapping GHC supports it.Travis Whitaker2020-05-298-21/+98
|
* hadrian: introduce 'install' targetAlp Mestanogullari2020-05-293-1/+38
| | | | | | | Its logic is very simple. It `need`s the `binary-dist-dir` target and runs suitable `configure` and `make install` commands for the user. A new `--prefix` command line argument is introduced to specify where GHC should be installed.
* Always define USE_PTHREAD_FOR_ITIMER for FreeBSD.Gleb Popov2020-05-291-1/+1
|
* Fix typo in documentationJeremy Schlatter2020-05-291-1/+1
|