summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* TcIface: Fix inverted logic in typechecking of source tickswip/T17616Ben Gamari2019-12-281-1/+1
| | | | | | | | | | | | | Previously we would throw away source ticks when the debug level was non-zero. This is precisely the opposite of what was intended. Fixes #17616. Metric Decrease: T13056 T9020 T9961 T12425
* Replace panic/notHandled with noExtCon in DsMetaRyan Scott2019-12-261-35/+42
| | | | | | | There are many spots in `DsMeta` where `panic` or `notHandled` is used after pattern-matching on a TTG extension constructor. This is overkill, however, as using `noExtCon` would work just as well. This patch switches out these panics for `noExtCon`.
* Minor refactor in ghc.cabal.in:Ömer Sinan Ağacan2019-12-263-15/+3
| | | | | | - Remove outdated comments - Move cutils.c from parser to cbits - Remove unused cutils.h
* Fix comment about minimal gcc versionGabor Greif2019-12-251-1/+1
| | | to be consistent what FP_GCC_VERSION requires
* Fix copy-paste error in commentGabor Greif2019-12-251-1/+1
|
* Switch to ReadTheDocs theme for the user-guideSylvain Henry2019-12-2528-53/+3294
|
* Remove outdated commentSylvain Henry2019-12-241-4/+2
|
* fixup! Fix endian handling w.r.t. CPP macro WORDS_BIGENDIANStefan Schulze Frielinghaus2019-12-243-3/+3
|
* Fix endian handling w.r.t. CPP macro WORDS_BIGENDIANStefan Schulze Frielinghaus2019-12-243-0/+10
| | | | | | Include header file `ghcautoconf.h` where the CPP macro `WORDS_BIGENDIAN` is defined. This finally fixes #17337 (in conjunction with commit 6c59cc71dc).
* lookupBindGroupOcc: recommend names in the same namespace (#17593)Ryan Scott2019-12-206-9/+35
| | | | | | | | | | | Previously, `lookupBindGroupOcc`'s error message would recommend all similar names in scope, regardless of whether they were type constructors, data constructors, or functions, leading to the confusion witnessed in #17593. This is easily fixed by only recommending names in the same namespace, using the `nameSpacesRelated` function. Fixes #17593.
* Deduplicate copied monad failure handler codeJohn Ericson2019-12-203-26/+12
|
* Handle large ARR_WORDS in heap census (fix #17572)Sylvain Henry2019-12-194-0/+35
| | | | | | | | We can do a heap census with a non-profiling RTS. With a non-profiling RTS we don't zero superfluous bytes of shrunk arrays hence a need to handle the case specifically to avoid a crash. Revert part of a586b33f8e8ad60b5c5ef3501c89e9b71794bbed
* Avoid race condition in hDuplicateToMoritz Kiefer2019-12-191-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In our codebase we have some code along the lines of ``` newStdout <- hDuplicate stdout stderr `hDuplicateTo` stdout ``` to avoid stray `putStrLn`s from corrupting a protocol (LSP) that is run over stdout. On CI we have seen a bunch of issues where `dup2` returned `EBUSY` so this fails with `ResourceExhausted` in Haskell. I’ve spent some time looking at the docs for `dup2` and the code in `base` and afaict the following race condition is being triggered here: 1. The user calls `hDuplicateTo stderr stdout`. 2. `hDuplicateTo` calls `hClose_help stdout_`, this closes the file handle for stdout. 3. The file handle for stdout is now free, so another thread allocating a file might get stdout. 4. If `dup2` is called while `stdout` (now pointing to something else) is half-open, it returns EBUSY. I think there might actually be an even worse case where `dup2` is run after FD 1 is fully open again. In that case, you will end up not just redirecting the original stdout to stderr but also the whatever resulted in that file handle being allocated. As far as I can tell, `dup2` takes care of closing the file handle itself so there is no reason to do this in `hDuplicateTo`. So this PR replaces the call to `hClose_help` by the only part of `hClose_help` that we actually care about, namely, `flushWriteBuffer`. I tested this on our codebase fairly extensively and haven’t been able to reproduce the issue with this patch.
* Add GHC-API logging hooksSylvain Henry2019-12-1837-193/+323
| | | | | | | | | | | | | | | | | | | | | | | * Add 'dumpAction' hook to DynFlags. It allows GHC API users to catch dumped intermediate codes and information. The format of the dump (Core, Stg, raw text, etc.) is now reported allowing easier automatic handling. * Add 'traceAction' hook to DynFlags. Some dumps go through the trace mechanism (for instance unfoldings that have been considered for inlining). This is problematic because: 1) dumps aren't written into files even with -ddump-to-file on 2) dumps are written on stdout even with GHC API 3) in this specific case, dumping depends on unsafe globally stored DynFlags which is bad for GHC API users We introduce 'traceAction' hook which allows GHC API to catch those traces and to avoid using globally stored DynFlags. * Avoid dumping empty logs via dumpAction/traceAction (but still write empty files to keep the existing behavior)
* Use *Mode suffix instead of *MJosh Meredith2019-12-173-17/+17
|
* Rename SphinxMode constructorsJosh Meredith2019-12-173-18/+18
|
* Fix ambiguous occurence error when building HadrianJosh Meredith2019-12-171-1/+1
|
* testsuite: Mark print002 as fragile on ARMBen Gamari2019-12-171-1/+1
| | | | | | | | | Due to #17557. Also accepting spurious performance change. Metric Decrease: T1969
* Revert "testsuite: Mark cgrun057 as broken on ARMv7"Ben Gamari2019-12-171-1/+0
| | | | This reverts commit 6cfc47ec8a478e1751cb3e7338954da1853c3996.
* gitlab-ci: Don't allow armv7 jobs to failBen Gamari2019-12-171-1/+0
|
* testsuite: Mark T5435_* tests as broken on ARMBen Gamari2019-12-171-6/+16
| | | | | `T5435_v_asm_a`, `T5435_v_asm_b`, and `T5435_v_gcc` all fail on ARMv7. See #17559.
* testsuite: Make ghc_built_by_llvm check more preciseBen Gamari2019-12-173-11/+11
| | | | | | | | | | Previously it would hackily look at the flavour name to determine whether LLVM was used to build stage2 ghc. However, this didn't work at all with Hadrian and would miss cases like ARM where we use the LLVM backend by default. See #16087 for the motivation for why ghc_built_by_llvm is needed at all. This should catch one of the ARMv7 failures described in #17555.
* testsuite: Mark T14028 as broken on ARMv7Ben Gamari2019-12-171-0/+1
| | | | Due to #17558.
* testsuite: Mark T13825-debugger as broken on ARMv7Ben Gamari2019-12-171-1/+3
| | | | Due to #17557.
* testsuite: Mark T10272 as broken on ARMv7Ben Gamari2019-12-171-3/+4
| | | | Due to #17556.
* testsuite: Mark prog001 as fragile on ARMv7Ben Gamari2019-12-171-0/+1
| | | | Due to #17555.
* testsuite: Mark cgrun057 as broken on ARMv7Ben Gamari2019-12-171-0/+1
| | | | | Due to #17554. It's very surprising that this only occurs on ARMv7 but this is the only place I've seen this failure thusfar.
* gitlab-ci: Drop redundant release-x86_64-linux-deb9 jobBen Gamari2019-12-161-14/+0
|
* gitlab-ci: Re-add release-x86_64-deb9 jobBen Gamari2019-12-161-6/+5
| | | | Also eliminate some redundancy.
* gitlab-ci: Another approach for xz detectionBen Gamari2019-12-162-6/+18
|
* gitlab-ci: Use xz --threads on AlpineBen Gamari2019-12-161-0/+1
|
* gitlab-ci: Allow debian 8 build to failBen Gamari2019-12-161-0/+1
| | | | | The python release shipped with deb8 (3.3) is too old for our testsuite driver.
* gitlab-ci: Use xz --threads on Debian 10Ben Gamari2019-12-161-1/+2
|
* gitlab-ci: Fix Windows artifact collectionBen Gamari2019-12-161-0/+2
| | | | Variable interpolation in gitlab-ci.yml apparently doesn't work. Sigh.
* Do more validity checks for quantified constraintsRichard Eisenberg2019-12-1612-22/+49
| | | | | | Close #17583. Test case: typecheck/should_fail/T17563
* Use "OrCoVar" functions lessKrzysztof Gogolewski2019-12-1620-51/+52
| | | | | | | | | | | As described in #17291, we'd like to separate coercions and expressions in a more robust fashion. This is a small step in this direction. - `mkLocalId` now panicks on a covar. Calls where this was not the case were changed to `mkLocalIdOrCoVar`. - Don't use "OrCoVar" functions in places where we know the type is not a coercion.
* Remove dataConSigKrzysztof Gogolewski2019-12-163-20/+4
| | | | As suggested in #17291
* Add index-state to hadrian/cabal.projectOleg Grenrus2019-12-161-0/+3
| | | | | Then one is freer to omit upper bounds, as we won't pick any new entries on Hackage while building hadrian itself.
* Having no shake upper bound is irresposibleOleg Grenrus2019-12-161-1/+1
| | | | | Given that shake is far from "done" API wise, and is central component to the build system.
* Revert "rts: Drop redundant flags for libffi"Ben Gamari2019-12-121-3/+8
| | | | | | | This seems to have regressed builds using `--with-system-libffi` (#17520). This reverts commit 3ce18700f80a12c48a029b49c6201ad2410071bb.
* gitlab-ci: Move -dwarf and -debug jobs to full-build stageBen Gamari2019-12-121-2/+2
| | | | This sacrifices some precision in favor of improving parallelism.
* testsuite: Add test for #17549Ben Gamari2019-12-122-0/+7
|
* testsuite: Simplify and clarify performance test baseline searchBen Gamari2019-12-123-69/+48
| | | | | | | The previous implementation was extremely complicated, seemingly to allow the local and CI namespaces to be searched incrementally. However, it's quite unclear why this is needed and moreover the implementation seems to have had quadratic runtime cost in the search depth(!).
* Add --show-unit-ids flag to ghc-pkgOleg Grenrus2019-12-121-9/+22
| | | | | I only added it into --simple-output and ghc-pkg check output; there are probably other places where it can be adopted.
* Warn on inferred polymorphic recursionRichard Eisenberg2019-12-1118-39/+191
| | | | | | | | | | | Silly users sometimes try to use visible dependent quantification and polymorphic recursion without a CUSK or SAK. This causes unexpected errors. So we now adjust expectations with a bit of helpful messaging. Closes #17541 and closes #17131. test cases: dependent/should_fail/T{17541{,b},17131}
* rts: Specialize hashing at call site rather than in struct.Crazycolorz52019-12-1110-88/+157
| | | | | | | | | | | | | | | | Separate word and string hash tables on the type level, and do not store the hashing function. Thus when a different hash function is desire it is provided upon accessing the table. This is worst case the same as before the change, and in the majority of cases is better. Also mark the functions for aggressive inlining to improve performance. {F1686506} Reviewers: bgamari, erikd, simonmar Subscribers: rwbarton, thomie, carter GHC Trac Issues: #13165 Differential Revision: https://phabricator.haskell.org/D4889
* Re-layout validate scriptBen Gamari2019-12-101-144/+142
| | | | This script was previously a whitespace nightmare.
* testsuite: Add (broken) test for #17510Ben Gamari2019-12-103-0/+20
|
* Move Int64# and Word64# sections of primops.txt.ppJohn Ericson2019-12-101-22/+21
| | | | This way it is next to the other fixed-sized ones.
* Move Int# section of primops.txt.ppJohn Ericson2019-12-101-153/+153
| | | | | This matches the organization of the fixed-sized ones, and keeps each Int* next to its corresponding Word*.