summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Generate ghcplatform.h from RTS configurewip/rts-configureJohn Ericson2023-01-026-58/+54
|
* Move/Copy remaining AC_DEFINE to RTS configJohn Ericson2023-01-024-37/+66
| | | | | Only exception is the LLVM version macros, which are used for GHC itself.
* Move over a number of C-style checks to RTS configureJohn Ericson2023-01-022-53/+54
|
* Move function checks to RTS configureJohn Ericson2023-01-022-22/+22
| | | | | Some of these functions are used in `base` too, but we can copy the checks over to its configure if that's an issue.
* Split mingwex check between top level and RTSJohn Ericson2023-01-022-4/+11
|
* Split libm check between top level and RTSJohn Ericson2023-01-022-9/+11
|
* Split BFD support to RTS configureJohn Ericson2023-01-023-3/+5
|
* Do FP_FIND_LIBFFI in RTS configure tooJohn Ericson2023-01-021-0/+6
|
* Move libdl check to RTS configureJohn Ericson2023-01-022-5/+7
|
* Move alloca, fork, const, and big endian checks to RTS configureJohn Ericson2023-01-022-17/+17
|
* Move leading underscore checks to RTS configureJohn Ericson2023-01-022-1/+6
|
* Move visibility and clock_gettime checks to RTS configureJohn Ericson2023-01-022-14/+11
|
* Move apple compat check to RTS configureJohn Ericson2023-01-022-14/+14
|
* move FP_CHECK_PTHREADS to RTS configureJohn Ericson2023-01-023-3/+6
|
* rts configure: Move over eventfd, __thread, and mem mgmt checksJohn Ericson2023-01-022-94/+93
|
* RTS configure: handle ffi adjustor methodJohn Ericson2023-01-021-0/+3
|
* Move lib{numa,dw} defines to RTS configurewip/rts-configure-libdw-libnumaJohn Ericson2023-01-025-42/+40
| | | | | | | | | | | Clean up the m4 to handle the auto case always and be more consistent. Also simplify the CPP --- we should always have both headers if we are using libnuma. "side effects" (AC_DEFINE, and AC_SUBST) are removed from the macros to better separate searching from actions taken based on search results. This might seem overkill now, but will make shuffling logic between configure scripts easier later.
* rts: Move external symbols logic to the configure scriptJohn Ericson2023-01-015-194/+139
| | | | | This is much more terse because we are programatically handling the leading underscore.
* Give the RTS it's own configure scriptJohn Ericson2023-01-0114-50/+116
| | | | | | | | | | | | | Currently it doesn't do much anything, we are just trying to introduce it without breaking the build. Later, we will move functionality from the top-level configure script over to it. We need to bump Cabal for https://github.com/haskell/cabal/pull/8649; to facilitate and existing hack of skipping some configure checks for the RTS we now need to skip just *part* not *all* of the "post configure" hook, as running the configure script (which we definitely want to do) is also implemented as part of the "post configure" hook. But doing this requires exposing functionality that wasn't exposed before.
* Document infelicities of instance Ord Double and workaroundsBodigrim2022-12-241-23/+30
|
* hadrian: Ensure that linker scripts are used when merging objectsBen Gamari2022-12-241-2/+6
| | | | | | In #22527 @rui314 inadvertantly pointed out a glaring bug in Hadrian's implementation of the object merging rules: unlike the old `make` build system we utterly failed to pass the needed linker scripts. Fix this.
* Drop support for kind constraints.wip/p547Richard Eisenberg2022-12-2441-620/+156
| | | | | | | | | | | | | | | | | | | | | | | | This implements proposal 547 and closes ticket #22298. See the proposal and ticket for motivation. Compiler perf improves a bit Metrics: compile_time/bytes allocated ------------------------------------- CoOpt_Singletons(normal) -2.4% GOOD T12545(normal) +1.0% T13035(normal) -13.5% GOOD T18478(normal) +0.9% T9872d(normal) -2.2% GOOD geo. mean -0.2% minimum -13.5% maximum +1.0% Metric Decrease: CoOpt_Singletons T13035 T9872d
* Store RdrName rather than OccName in HolesMatthew Pickering2022-12-2419-56/+117
| | | | | | | | | | | | | | | | | In #20472 it was pointed out that you couldn't defer out of scope but the implementation collapsed a RdrName into an OccName to stuff it into a Hole. This leads to the error message for a deferred qualified name dropping the qualification which affects the quality of the error message. This commit adds a bit more structure to a hole, so a hole can replace a RdrName without losing information about what that RdrName was. This is important when printing error messages. I also added a test which checks the Template Haskell deferral of out of scope qualified names works properly. Fixes #22130
* gitlab-ci: Introduce aarch64-linux-llvm jobBen Gamari2022-12-242-0/+178
| | | | | | | This nightly job will ensure that we don't break the LLVM backend on AArch64/Linux by bootstrapping GHC. This would have caught #22640.
* llvmGen: Fix relaxed orderingBen Gamari2022-12-241-1/+1
| | | | | | | Previously I used LLVM's `unordered` ordering for the C11 `relaxed` ordering. However, this is wrong and should rather use the LLVM `monotonic` ordering. Fixes #22640
* ci: Run head.hackage jobs on upstream-testing branch rather than masterMatthew Pickering2022-12-241-1/+1
| | | | | | | | | This change allows less priviledged users to trigger head.hackage jobs because less permissions are needed to trigger jobs on the upstream-testing branch, which is not protected. There is a CI job which updates upstream-testing each hour to the state of the master branch so it should always be relatively up-to-date.
* ci: Don't run abi-test-nightly on release jobsMatthew Pickering2022-12-241-1/+0
| | | | | | The test is not configured to get the correct dependencies for the release pipelines (and indeed stops the release pipeline being run at all)
* head.hackage: Use slow-validate bindist for linting jobsMatthew Pickering2022-12-241-14/+54
| | | | | | | | | | | | | | | | | | | | | | | | This enables the SLOW_VALIDATE env var for the linting head.hackage jobs, namely the jobs enabled manually, by the label or on the nightly build now use the deb10-numa-slow-validate bindist which has assertions enabled. See #22623 for a ticket which was found by using this configuration already! The head.hackage jobs triggered by upstream CI are now thusly: hackage-lint: Can be triggered on any MR, normal validate pipeline or nightly build. Runs head.hackage with -dlint and a slow-validate bindist hackage-label-lint: Trigged on MRs with "user-facing" label, runs the slow-validate head.hackage build with -dlint. nightly-hackage-lint: Runs automatically on nightly pipelines with slow-validate + dlint config. nightly-hackage-perf: Runs automaticaly on nightly pipelines with release build and eventlogging enabled. release-hackage-lint: Runs automatically on release pipelines with -dlint on a release bindist.
* compiler: Ensure that GHC toolchain is first in search pathBen Gamari2022-12-242-9/+9
| | | | | | | As noted in #22561, it is important that GHC's toolchain look first for its own headers and libraries to ensure that the system's are not found instead. If this happens things can break in surprising ways (e.g. see #22561).
* add GHC.Utils.Binary.foldGet' and use for Ifacedoyougnu2022-12-232-2/+19
| | | | | | | | | | A minor optimization to remove lazy IO and a lazy accumulator strictify foldGet' IFace.Binary: use strict foldGet' remove superfluous bang
* nonmoving: Make free list counter accesses atomicBen Gamari2022-12-231-1/+1
| | | | Since these may race with the allocator(s).
* nonmoving: Fix race in shortcuttingBen Gamari2022-12-232-1/+8
| | | | | We must use an acquire load to read the info table pointer since if we find an indirection we must be certain that we see the indirectee.
* nonmoving: Fix benign race in update remembered set checkBen Gamari2022-12-231-1/+3
| | | | | Relaxed load is fine here since we will take the lock before looking at the list.
* nonmoving: Make bitmap accesses atomicBen Gamari2022-12-231-2/+2
| | | | | | This is a benign race on any sensible hard since these are byte accesses. Nevertheless, atomic accesses are necessary to satisfy TSAN.
* nonmoving: Ensure that we aren't holding locks when closing themBen Gamari2022-12-231-1/+4
| | | | TSAN complains about this sort of thing.
* nonmoving: Refactor update remembered set initializationBen Gamari2022-12-235-34/+66
| | | | | | | This avoids a lock inversion between the storage manager mutex and the stable pointer table mutex by not dropping the SM_MUTEX in nonmovingCollect. This requires quite a bit of rejiggering but it does seem like a better strategy.
* nonmoving: Make segment state updates atomicBen Gamari2022-12-231-1/+1
|
* nonmoving: Fix races in collector status trackingBen Gamari2022-12-232-7/+10
| | | | | | Mark a number of accesses to do with tracking of the status of the concurrent collection thread as atomic. No interesting races here, merely necessary to satisfy TSAN.
* nonmoving: Ensure that mutable fields have acquire barrierBen Gamari2022-12-231-8/+16
|
* nonmoving: Eliminate race in bump_static_flagBen Gamari2022-12-231-8/+10
| | | | | | | To ensure that we don't race with a mutator entering a new CAF we take the SM mutex before touching static_flag. The other option here would be to instead modify newCAF to use a CAS but the present approach is a bit safer.
* nonmoving: Use atomic when looking at bd->genBen Gamari2022-12-231-1/+4
| | | | Since it may have been mutated by a moving GC.
* nonmoving: Fix segment list racesBen Gamari2022-12-232-6/+12
|
* nonmoving: Fix race in marking of blackholesBen Gamari2022-12-232-2/+8
| | | | | We must use an acquire-fence when marking to ensure that the indirectee is visible.
* ci: Move wasm pipelines into nightly rather than masterMatthew Pickering2022-12-231-2/+3
| | | | | See #22664 for the changes which need to be made to bring one of these back to the validate pipeline.
* rts/m32: Fix sanity checkingBen Gamari2022-12-221-1/+1
| | | | | Previously we would attempt to clear pages which were marked as read-only. Fix this.
* Fix unifier bug: failing to decompose over-saturated type familySimon Peyton Jones2022-12-223-13/+37
| | | | This simple patch fixes #22647
* base: Fix event manager shutdown race on non-Linux platformsBen Gamari2022-12-221-3/+10
| | | | | | | During shutdown it's possible that we will attempt to use a closed fd to wakeup another capability's event manager. On the Linux eventfd path we were careful to handle this. However on the non-Linux path we failed to do so. Fix this.
* Refactor mkRuntimeErrorSimon Peyton Jones2022-12-2212-102/+182
| | | | | | | | | This patch fixes #22634. Because we don't have TYPE/CONSTRAINT polymorphism, we need two error functions rather than one. I took the opportunity to rname runtimeError to impossibleError, to line up with mkImpossibleExpr, and avoid confusion with the genuine runtime-error-constructing functions.
* JS: fix support for -outputdir (#22641)Sylvain Henry2022-12-224-62/+56
| | | | | | | The `-outputdir` option wasn't correctly handled with the JS backend because the same code path was used to handle both objects produced by the JS backend and foreign .js files. Now we clearly distinguish the two in the pipeline, fixing the bug.
* EPA: Make EOF position part of AnnsModuleAlan Zimmerman2022-12-2225-209/+190
| | | | | Closes #20951 Closes #19697