summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Reduce default test verbositywip/test-verbosityMatthew Pickering2021-01-194-4/+12
|
* Add some additional information to the fail message based on exit codeHécate2021-01-171-2/+16
|
* hadrian: Introduce no_profiled_libs flavour transformerBen Gamari2021-01-172-0/+11
| | | | Per request of @AndreasK.
* Use captureTopConstraints at top levelSimon Peyton Jones2021-01-174-4/+14
| | | | Missing this caused #19197. Easily fixed.
* Hadrian: fix flavour parserSylvain Henry2021-01-171-2/+3
| | | | | | Hadrian was silently using the "quick" flavour when "quick-debug" or "quick-validate" was used. This patch fixes the parser and ensures that the whole input is consumed.
* Bump gmp submodule, now with arm64 supportMoritz Angermann2021-01-172-31/+31
|
* Add regression test for #16577Sylvain Henry2021-01-172-0/+2088
|
* Bignum: fix for Integer/Natural Ord instancesSylvain Henry2021-01-175-84/+105
| | | | | | | | | * allow `integerCompare` to inline into `integerLe#`, etc. * use `naturalSubThrow` to implement Natural's `(-)` * use `naturalNegate` to implement Natural's `negate` * implement and use `integerToNaturalThrow` to implement Natural's `fromInteger` Thanks to @christiaanb for reporting these
* Third pass on doctest corrections.Oleg Grenrus2021-01-173-11/+27
| | | | With `-K500K` rts option stack overflows are more deterministic
* Fix unsoundness for linear guards (#19120)Krzysztof Gogolewski2021-01-174-1/+18
|
* configure: fix the use of some obsolete macros (#19189)Sylvain Henry2021-01-172-35/+35
|
* rts: Initialize card table in newArray#Ben Gamari2021-01-172-13/+23
| | | | | | | | | | Previously we would leave the card table of new arrays uninitialized. This wasn't a soundness issue: at worst we would end up doing unnecessary scavenging during GC, after which the card table would be reset. That being said, it seems worth initializing this properly to avoid both unnecessary work and non-determinism. Fixes #19143.
* Revert "Remove SpecConstrAnnotation (#13681)" (#19168)Sylvain Henry2021-01-177-31/+118
| | | | | | This reverts commit 7bc3a65b467c4286377b9bded277d5a2f69160b3. NoSpecConstr is used in the wild (see #19168)
* base: Eliminate pinned allocations from IntTableBen Gamari2021-01-173-13/+43
| | | | | | | | This replaces the ForeignPtr used to track IntTable's pointer size with a single-entry mutable ByteArray#, eliminating the fragmentation noted in #19171. Fixes #19171.
* Import fcntl with capi calling conventionOleg Grenrus2021-01-171-0/+1
| | | | See https://gitlab.haskell.org/ghc/ghc/-/issues/18854
* rts/linker: Don't assume existence of dlinfoBen Gamari2021-01-174-12/+22
| | | | | | | | | The native-code codepath uses dlinfo to identify memory regions owned by a loaded dynamic object, facilitating safe unload. Unfortunately, this interface is not always available. Add an autoconf check for it and introduce a safe fallback behavior. Fixes #19159.
* rts: gc: use mutex+condvar instead of spinlooks in gc entry/exitDouglas Wilson2021-01-175-124/+113
| | | | | | used timed wait on condition variable in waitForGcThreads fix dodgy timespec calculation
* rts: add timedWaitConditionDouglas Wilson2021-01-173-0/+27
|
* rts: add max_n_todo_overflow internal counterDouglas Wilson2021-01-176-11/+39
| | | | | | | | I've never observed this counter taking a non-zero value, however I do think it's existence is justified by the comment in grab_local_todo_block. I've not added it to RTSStats in GHC.Stats, as it doesn't seem worth the api churn.
* rts: remove no_work counterDouglas Wilson2021-01-176-31/+6
| | | | We are no longer busyish waiting, so this is no longer meaningful
* rts: gc: use mutex+condvar instead of sched_yield in gc main loopDouglas Wilson2021-01-173-134/+237
| | | | | | | | | | | | | | | | | | | Here we remove the schedYield loop in scavenge_until_all_done+any_work, replacing it with a single mutex + condition variable. Previously any_work would check todo_large_objects, todo_q, todo_overflow of each gen for work. Comments explained that this was checking global work in any gen. However, these must have been out of date, because all of these locations are local to a gc thread. We've eliminated any_work entirely, instead simply looping back into scavenge_loop, which will quickly return if there is no work. shutdown_gc_threads is called slightly earlier than before. This ensures that n_gc_threads can never be observed to increase from 0 by a worker thread. startup_gc_threads is removed. It consisted of a single variable assignment, which is moved inline to it's single callsite.
* Remove unused extension pragmas from the compiler code baseHécate2021-01-1718-26/+17
|
* Hadrian: Pass -jshakethreads to Haddock invocationsalexbiehl2021-01-171-1/+3
|
* Bump Haddock submodulealexbiehl2021-01-171-0/+0
| | | | | Metric Decrease: haddock.base
* rts/eventlog: Reset ticky counters after dumping sampleBen Gamari2021-01-172-1/+5
|
* rts/eventlog: Introduce event to demarcate new ticky sampleBen Gamari2021-01-173-1/+16
|
* CmmToLlvm: Sign/Zero extend parameters for foreign callsStefan Schulze Frielinghaus2021-01-173-24/+47
| | | | | | | | For some architectures the C calling convention is that any integer shorter than 64 bits is replaced by its 64 bits representation using sign or zero extension. Fixes #19023.
* Accept (fixed) T14059bSebastian Graf2021-01-172-3/+3
| | | | | | The `expect_broken` of `T14059b` expected outdated output. But #14059 has long been fixed, so we this commit accepts the new output and marks the test as unbroken.
* PmCheck: Positive info doesn't imply there is an inhabitant (#18960)Sebastian Graf2021-01-175-28/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider `T18960`: ```hs pattern P :: a -> a pattern P x = x {-# COMPLETE P :: () #-} foo :: () foo = case () of P _ -> () ``` We know about the match variable of the case match that it is equal to `()`. After the match on `P`, we still know it's equal to `()` (positive info), but also that it can't be `P` (negative info). By the `COMPLETE` pragma, we know that implies that the refinement type of the match variable is empty after the `P` case. But in the PmCheck solver, we assumed that "has positive info" means "is not empty", thus assuming we could omit a costly inhabitation test. Which is wrong, as we saw above. A bit of a complication arises because the "has positive info" spared us from doing a lot of inhabitation tests in `T17836b`. So we keep that check, but give it a lower priority than the check for dirty variables that requires us doing an inhabitation test. Needless to say: This doesn't impact soundness of the checker at all, it just implements a better trade-off between efficiency and precision. Fixes #18960. Metric Decrease: T17836
* Missing fields: enhance error messages (#18869)Sylvain Henry2021-01-175-27/+47
| | | | | | This patch delays the detection of missing fields in record creation after type-checking. This gives us better error messages (see updated test outputs).
* Show missing field types (#18869)Sylvain Henry2021-01-1713-30/+100
|
* Remove references to ApplicativeDo in the base haddocksHécate2021-01-135-137/+106
|
* Update expected-undocumented-flags.txtBenjamin Maurer2021-01-101-1/+0
|
* Document flag -dasm-lint in debugging.rstBenjamin Maurer2021-01-101-0/+7
|
* WorkWrap: Use SysLocal Name for Thunk Splitting (#19180)Sebastian Graf2021-01-103-13/+67
| | | | | | | | | | | | | | | | | | Since !4493 we annotate top-level bindings with demands, which leads to novel opportunities for thunk splitting absent top-level thunks. It turns out that thunk splitting wasn't quite equipped for that, because it re-used top-level, `External` Names for local helper Ids. That triggered a CoreLint error (#19180), reproducible with `T19180`. Fixed by adjusting the thunk splitting code to produce `SysLocal` names for the local bindings. Fixes #19180. Metric Decrease: T12227 T18282
* Fix `not32Word#` -> `notWord32#`John Ericson2021-01-101-1/+1
| | | | | | This is is correcting a mistake I unfortunately missed in !4698. But that is a recent PR so this fix is not a compatibility hazard with released versions of GHC.
* Correct more doctestsOleg Grenrus2021-01-109-20/+33
|
* Fix calls to varargs C function fcntlNick Erdmann2021-01-091-1/+2
| | | | | | The ccall calling convention doesn't support varargs functions, so switch to capi instead. See https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/ffi.html#varargs-not-supported-by-ccall-calling-convention
* testsuite: Increase delay in conc059Ben Gamari2021-01-093-26/+37
| | | | | | | | | | | | As noted in #19179, conc059 can sometimes fail due to too short of a delay in the its Haskell threads. Address this by increasing the delay by an order of magnitude to 5 seconds. While I'm in town I refactored the test to eliminate a great deal of unnecessary platform dependence, eliminate use of the deprecated usleep, and properly handle interruption by signals. Fixes #19179.
* Natural: fix left shift of 0 (fix #19170)Sylvain Henry2021-01-094-1/+17
|
* gone_wrong.rst: remove duplicate termGreg Steuck2021-01-091-1/+1
|
* intro.rst: remove duplication of release references and fix a linkGreg Steuck2021-01-091-6/+1
|
* gitlab-ci: Don't attempt to push perf notes in cross buildBen Gamari2021-01-091-0/+5
| | | | | We don't run the testsuite in cross-compiled builds so there is nothing to push.
* rts/PEi386: Fix reentrant lock usageBen Gamari2021-01-094-4/+1
| | | | | | | | | | | | Previously lookupSymbol_PEi386 would call lookupSymbol while holding linker_mutex. Fix this by rather calling `lookupDependentSymbol`. This is safe because lookupSymbol_PEi386 unconditionally holds linker_mutex. Happily, this un-breaks `T12771`, `T13082_good`, and `T14611`, which were previously marked as broken due to #18718. Closes #19155.
* rts/Capability: Use relaxed load in findSparkBen Gamari2021-01-091-1/+2
| | | | When checking n_returning_tasks.
* rts: Use SEQ_CST accesses when touching `wakeup`Ben Gamari2021-01-093-4/+4
| | | | | These are the two remaining non-atomic accesses to `wakeup` which were missed by the original TSAN patch.
* rts: Use relaxed load when checking for cap ownershipBen Gamari2021-01-091-1/+4
| | | | This check is merely a service to the user; no reason to synchronize.
* rts: stats: Fix calculation for fragmentationDouglas Wilson2021-01-091-1/+1
|
* rts: stats: Some fixes to stats for sequential gcsDouglas Wilson2021-01-092-14/+37
| | | | | | | | Solves #19147. When n_capabilities > 1 we were not correctly accounting for gc time for sequential collections. In this case par_n_gcthreads == 1, however it is not guaranteed that the single gc thread is capability 0. A similar issue for copied is addressed as well.
* More tidy synopses, and new generative recursionViktor Dukhovni2021-01-091-69/+260
| | | | | | | | - Further correction and reconcialation with new overview of the existing synopses. Restored some "Tree" examples. - New section on generative recursion via Church encoding of lists.