[Git][ghc/ghc][wip/romes/hadrian-cross-stage2-rebase_SVEN_FINAL] 77 commits: compiler: add myCapabilityExpr to GHC.Cmm.Utils
Sven Tennie pushed to branch wip/romes/hadrian-cross-stage2-rebase_SVEN_FINAL at Glasgow Haskell Compiler / GHC Commits: a46a1bb1 by Cheng Shao at 2026-03-09T04:50:30-04:00 compiler: add myCapabilityExpr to GHC.Cmm.Utils This commit adds `myCapabilityExpr` to `GHC.Cmm.Utils` which is computed from `BaseReg`. It's convenient for codegen logic where one needs to pass the current Capability's pointer. - - - - - 4afc65b1 by Cheng Shao at 2026-03-09T04:50:30-04:00 compiler: lower tryPutMVar# into a ccall directly This patch addresses an old TODO of `stg_tryPutMVarzh` by removing it completely and making the compiler lower `tryPutMVar#` into a ccall to `performTryPutMVar` directly, without landing into an intermediate C or Cmm function. `performTryPutMVar` is promoted to a public RTS function with default visibility, and the compiler lowering logic takes into account the C ABI of `performTryPutMVar` and converts from C Bool to primop's `Int#` result properly. - - - - - 9e3d6a58 by Simon Hengel at 2026-03-09T04:51:15-04:00 Don't use #line in haddocks This confuses the parser. Haddock output is unaffected by this change. (read: this still produces the same documentation) - - - - - f4e8fec2 by Wolfgang Jeltsch at 2026-03-09T04:52:01-04:00 Remove in-package dependencies on `GHC.Internal.System.IO` This contribution eliminates all dependencies on `GHC.Internal.System.IO` from within `ghc-internal`. It comprises the following changes: * Make `GHC.Internal.Fingerprint` independent of I/O support * Tighten the dependencies of `GHC.Internal.Data.Version` * Tighten the dependencies of `GHC.Internal.TH.Monad` * Tighten the dependencies of `GHCi.Helpers` * Move some code that needs `System.IO` to `template-haskell` * Move the `GHC.ResponseFile` implementation into `base` * Move the `System.Exit` implementation into `base` * Move the `System.IO.OS` implementation into `base` Metric Decrease: size_hello_artifact size_hello_artifact_gzip size_hello_unicode size_hello_unicode_gzip - - - - - 91df4c82 by Sylvain Henry at 2026-03-09T04:53:20-04:00 T18832: fix Windows CI failure by dropping removeDirectoryRecursive On Windows, open file handles prevent deletion. After killThread, the closer thread may not have called hClose yet, causing removeDirectoryRecursive to fail with "permission denied". The test harness cleans up the run directory anyway, so the call is redundant. - - - - - d7fe9671 by Cheng Shao at 2026-03-09T04:54:04-04:00 compiler: fix redundant import in GHC.StgToJS.Object This patch fixes a redundant import in GHC.StgToJS.Object that causes a build failure when compiling head from 9.14 with validate flavours. Fixes #26991. - - - - - 0bfd29c3 by Cheng Shao at 2026-03-09T04:54:46-04:00 wasm: fix `Illegal foreign declaration` failure when ghci loads modules with JSFFI exports This patch fixes a wasm ghci error when loading modules with JSFFI exports; the `backendValidityOfCExport` check in `tcCheckFEType` should only makes sense and should be performed when not checking the JavaScript calling convention; otherwise, when the calling convention is JavaScript, the codegen logic should be trusted to backends that actually make use of it. Fixes #26998. - - - - - e659610c by Duncan Coutts at 2026-03-09T12:08:35-04:00 Apply NOINLINE pragmas to generated Typeable bindings For context, see the existing Note [Grand plan for Typeable] and the Note [NOINLINE on generated Typeable bindings] added in the subsequent commit. This is about reducing the number of exported top level names and unfoldings, which reduces interface file sizes and reduces the number of global/dynamic linker symbols. Also accept the changed test output and metric decreases. Tests that record the phase output for type checking or for simplifier end up with different output: the generated bindings now have an Inline [~] annotation, and many top level names are now local rather than module-prefixed for export. Also accept the numerous metric decreases in compile_time/bytes allocated, and a few in compile_time/max_bytes_used. There's also one instance of a decrease in runtime/max_bytes_used but it's a ghci-way test and so presumably the reason is that it loads smaller .hi files and/or links fewer symbols. ------------------------- Metric Decrease: CoOpt_Singletons MultiLayerModulesTH_OneShot MultilineStringsPerf T10421 T10547 T12150 T12227 T12234 T12425 T13035 T13056 T13253 T13253-spj T15304 T15703 T16875 T17836b T17977b T18140 T18223 T18282 T18304 T18698a T18698b T18730 T18923 T20049 T21839c T24471 T24582 T24984 T3064 T4029 T5030 T5642 T5837 T6048 T9020 T9198 T9961 TcPlugin_RewritePerf WWRec hard_hole_fits mhu-perf ------------------------- - - - - - 67df5161 by Duncan Coutts at 2026-03-09T12:08:35-04:00 Add documentation Note [NOINLINE on generated Typeable bindings] and refer to it from the code and existing documentation. - - - - - c4ad6167 by Duncan Coutts at 2026-03-09T12:08:35-04:00 Switch existing note to "named wrinkle" style, (GPT1)..(GPT7) GPT = Grand plan for Typeable - - - - - dc84f8e2 by Cheng Shao at 2026-03-09T12:09:21-04:00 ci: only build deb13 for validate pipeline aarch64-linux jobs This patch drops the redundant aarch64-linux deb12 job from validate pipelines and only keeps deb13; it's still built in nightly/release pipelines. Closes #27004. - - - - - 23a50772 by Rajkumar Natarajan at 2026-03-10T14:11:37-04:00 chore: Merge GHC.Internal.TH.Quote into GHC.Internal.TH.Monad Move the QuasiQuoter datatype from GHC.Internal.TH.Quote to GHC.Internal.TH.Monad and delete the Quote module. Update submodule template-haskell-quasiquoter to use the merged upstream version that imports from the correct module. Co-authored-by: Cursor <cursoragent@cursor.com> - - - - - a2bb6fc3 by Simon Jakobi at 2026-03-10T14:12:23-04:00 Add regression test for #16122 - - - - - 604e1180 by Cheng Shao at 2026-03-11T15:00:42-04:00 hadrian: remove the broken bench flavour This patch removes the bench flavour from hadrian which has been broken for years and not used for actual benchmarking (for which `perf`/`release` is used instead). Closes #26825. - - - - - c3e64915 by Simon Jakobi at 2026-03-11T15:01:31-04:00 Add regression test for #18186 The original TypeInType language extension is replaced with DataKinds+PolyKinds for compatibility. Closes #18186. - - - - - 664996c7 by Andreas Klebinger at 2026-03-11T15:02:16-04:00 Bump nofib submodule. We accrued a number of nofib fixes we want to have here. - - - - - 517cf64e by Simon Jakobi at 2026-03-11T15:03:03-04:00 Add regression test for #15907 Closes #15907. - - - - - fff362cf by Simon Jakobi at 2026-03-11T15:03:49-04:00 Ensure T14272 is run in optasm way Closes #16539. - - - - - ec81ec2c by Simon Jakobi at 2026-03-11T15:03:49-04:00 Add regression test for #24632 Closes #24632. - - - - - cefec47b by Simon Jakobi at 2026-03-11T15:03:50-04:00 Fix module name of T9675: T6975 -> T9675 - - - - - d3690ae8 by Andreas Klebinger at 2026-03-11T15:04:31-04:00 User guide: Clarify phase control on INLINEABLE[foo] pragmas. Fixes #26851 - - - - - e7054934 by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #12694 Closes #12694. - - - - - 4756d9f6 by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #16275 Closes #16275. - - - - - 34b7e2c1 by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #14908 Closes #14908. - - - - - 4243db3d by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #14151 Closes #14151. - - - - - 0e9f1453 by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #12640 Closes #12640. - - - - - ae606c7f by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #15588 Closes #15588. - - - - - 5a38ce4e by Simon Jakobi at 2026-03-11T15:05:16-04:00 Add regression test for #9445 Closes #9445. - - - - - d054b467 by Cheng Shao at 2026-03-11T15:05:59-04:00 compiler: implement string interning logic for BCONPtrFS This patch adds a `FastStringEnv`-based cache of `MallocStrings` requests to `Interp`, so that when we load bytecode with many breakpoints that share the same module names & unit ids, we reuse the allocated remote pointers instead of issuing duplicte `MallocStrings` requests and bloating the C heap. Closes #26995. - - - - - b85a0293 by Simon Jakobi at 2026-03-11T15:06:41-04:00 Add perf test for #1216 Closes #1216. - - - - - cd7f7420 by Sylvain Henry at 2026-03-11T15:07:58-04:00 JS: check that tuple constructors are linked (#23709) Test js-mk_tup was failing before because tuple constructors weren't linked in. It's no longer an issue after the linker fixes. - - - - - d57f01a4 by Matthew Pickering at 2026-03-11T15:08:40-04:00 testsuite: Add test for foreign import prim with unboxed tuple return This commit just adds a test that foreign import prim works with unboxed sums. - - - - - 23d111ce by Matthew Pickering at 2026-03-11T15:08:41-04:00 Return a valid pointer in advanceStackFrameLocationzh When there is no next stack chunk, `advanceStackFrameLocationzh` used to return NULL in the pointer-typed StackSnapshot# result slot. Even though the caller treats that case as "no next frame", the result is still materialized in a GC-visible pointer slot. If a GC observes the raw NULL there, stack decoding can crash. Fix this by ensuring the dead pointer slot contains a valid closure pointer. Also make the optional result explicit by returning an unboxed sum instead of a tuple with a separate tag. Fixes #27009 - - - - - 4c58a3ae by Cheng Shao at 2026-03-11T15:09:22-04:00 hadrian: build profiled dynamic objects with -dynamic-too This patch enables hadrian to build profiled dynamic objects with `-dynamic-too`, addressing a build parallelism bottleneck in release pipelines. Closes #27010. - - - - - 870243e4 by Zubin Duggal at 2026-03-12T17:33:28+05:30 DmdAnal: Take stable unfoldings into account when determining argument demands Previously, demand analysis only looked at the RHS to compute argument demands. If the optimised RHS discarded uses of an argument that the stable unfolding still needed, it would be incorrectly marked absent. Worker/wrapper would then replace it with LitRubbish, and inlining the stable unfolding would use the rubbish value, causing a segfault. To fix, we introduce addUnfoldingDemands which analyses the stable unfolding with dmdAnal and combines its DmdType with the RHS's via the new `maxDmdType` which combines the demands of the stable unfolding with the rhs, so we can avoid any situation where we give an absent demand to something which is still used by the stable unfolding. Fixes #26416. - - - - - 669d09f9 by Cheng Shao at 2026-03-13T15:06:07-04:00 hadrian: remove redundant library/rts ways definitions from stock flavours This patch removes redundant library/rts ways definitions from stock flavours in hadrian; they can be replaced by applying appropriate filters on `defaultFlavour`. - - - - - a27dc081 by Teo Camarasu at 2026-03-13T15:06:51-04:00 ghc-internal: move bits Weak of finalizer interface to base We move parts of the Weak finalizer interface to `base` only the parts that the RTS needs to know about are kept in `ghc-internal`. This lets us then prune our imports somewhat and get rid of some SOURCE imports. Resolves #26985 - - - - - 6eef855b by Sylvain Henry at 2026-03-13T15:08:18-04:00 Stg/Unarise: constant-folding during unarisation (#25650) When building an unboxed sum from a literal argument, mkUbxSum previously emitted a runtime cast via `case primop [lit] of var -> ...`. This wrapper prevented GHC from recognising the result as a static StgRhsCon, causing top-level closures to be allocated as thunks instead of being statically allocated. Fix: try to perform the numeric literal cast at compile time using mkLitNumberWrap (wrapping semantics). If successful, return the cast literal directly with an identity wrapper (no case expression). The runtime cast path is kept as fallback for non-literal arguments. Test: codeGen/should_compile/T25650 - - - - - 905f8723 by Simon Jakobi at 2026-03-13T15:09:09-04:00 Add regression test for #2057 Test that GHC stops after an interface-file error instead of continuing into the linker. The test constructs a stale package dependency on purpose. `pkgB` is compiled against one version of package `A`, then the same unit id is replaced by an incompatible build of `A`. When `Main` imports `B`, GHC has to read `B.hi`, finds an unfolding that still mentions the old `A`, and should fail while loading interfaces. Closes #2057. Assisted-by: Codex - - - - - a13245a9 by Sylvain Henry at 2026-03-13T15:10:06-04:00 JS: fix recompilation avoidance (#23013) - we were checking the mtime of the *.jsexe directory, not of a file - we were not computing the PkgsLoaded at all - - - - - 07442653 by Cheng Shao at 2026-03-13T15:10:51-04:00 hadrian: bump index state & bootstrap plans This patch bumps hadrian index state & bootstrap plans: - The updated index state allows bootstrapping from 9.14 without cabal allow-newer hacks - The updated bootstrap plans all contain shake-0.19.9 containing important bugfix, allowing a subsequent patch to bump shake bound to ensure the bugfix is included - ghc 9.14.1 bootstrap plan is added - - - - - fdc1dbad by Cheng Shao at 2026-03-13T15:10:51-04:00 ci: add ghc 9.14.1 to bootstrap matrix This patch adds ghc 9.14.1 to bootstrap matrix, so that we test bootstrapping from ghc 9.14.1. - - - - - 91916079 by Sylvain Henry at 2026-03-13T15:11:43-04:00 T17912: wait for opener thread to block before killing it (#24739) Instead of a fixed 1000ms delay, poll threadStatus until the opener thread is in BlockedOnForeignCall, ensuring killThread only fires once the thread is provably inside the blocking open() syscall. This prevents the test from accidentally passing on Windows due to scheduling races. - - - - - baa4ebb4 by Cheng Shao at 2026-03-13T15:12:26-04:00 template-haskell: fix redundant import in Language.Haskell.TH.Quote This patch fixes a redundant import in `Language.Haskell.TH.Quote` that causes a ghc build failure when bootstrapping from 9.14 with validate flavours. Fixes #27014. - - - - - 02e68a86 by Brandon Simmons at 2026-03-13T15:13:19-04:00 Add a cumulative gc_sync_elapsed_ns counter to GHC.Internal.Stats This makes it possible to get an accurate view of time spent in sync phase when using prometheus-style sampling. Previously this was only available for the most recent GC. This intentionally leaves GHC.Stats API unchanged since it is marked as deprecated, and API changes there require CLC approval. Fixes #26944 - - - - - a18fa3c1 by Cheng Shao at 2026-03-14T05:12:14-04:00 configure: make $LLVMAS default to $CC when $CcLlvmBackend is YES This patch changes the $LLVMAS detection logic in configure so that when it's not manually specified by the user, it defaults to $CC if $CcLlvmBackend is YES. It's a more sensible default than auto-detected clang from the environment, especially when cross-compiling, $CC as the cross target's LLVM assembler is more compatible with the use case than the system-wide clang. Fixes #26769. - - - - - 3774086e by Matthew Pickering at 2026-03-14T05:13:00-04:00 exceptions: annotate onException continuation with WhileHandling Before this patch, an exception thrown in the `onException` handler would loose track of where the original exception was thrown. ``` import Control.Exception main :: IO () main = failingAction `onException` failingCleanup where failingAction = throwIO (ErrorCall "outer failure") failingCleanup = throwIO (ErrorCall "cleanup failure") ``` would report ``` T28399: Uncaught exception ghc-internal:GHC.Internal.Exception.ErrorCall: cleanup failure HasCallStack backtrace: throwIO, called at T28399.hs:<line>:<column> in <package-id>:Main ``` notice that the "outer failure" exception is not present in the error message. With this patch, any exception thrown is in the handler is annotated with WhileHandling. The resulting message looks like ``` T28399: Uncaught exception ghc-internal:GHC.Internal.Exception.ErrorCall: cleanup failure While handling outer failure HasCallStack backtrace: throwIO, called at T28399.hs:7:22 in main:Main ``` CLC Proposal: https://github.com/haskell/core-libraries-committee/issues/397 Fixes #26759 - - - - - 63ae8eb3 by Andreas Klebinger at 2026-03-14T05:13:43-04:00 Fix missing profiling header for origin_thunk frame. Fixes #27007 - - - - - 213d2c0e by Cheng Shao at 2026-03-14T05:14:28-04:00 ci: fix ci-images revision The current ci-images revision was a commit on the WIP branch of https://gitlab.haskell.org/ghc/ci-images/-/merge_requests/183, and it's not on the current ci-images master branch. This patch fixes the image revision to use the current tip of ci-images master. - - - - - fc2b083f by Andreas Klebinger at 2026-03-14T05:15:14-04:00 Revert "hadrian/build-cabal: Better respect and utilize -j" This reverts commit eab3dbba79650e6046efca79133b4c0a5257613d. While it's neat this currently isn't well supported on all platforms. It's time will come, but for now I'm reverting this to avoid issues for users on slightly unconvential platforms. This will be tracked at #26977. - - - - - 12a706cf by Cheng Shao at 2026-03-14T16:37:54-04:00 base: fix redundant imports in GHC.Internal.Weak.Finalize This patch fixes redundant imports in GHC.Internal.Weak.Finalize that causes a regression in bootstrapping head from 9.14 with validate flavours. Fixes #27026. - - - - - b5d39cad by Matthew Pickering at 2026-03-14T16:38:37-04:00 Use explicit syntax rather than pure - - - - - 4deac1ea by Matthew Pickering at 2026-03-15T13:51:52+00:00 Add missing req_interp modifier to T18441fail3 and T18441fail19 These tests require the interpreter but they were failing in a different way with the javascript backend because the interpreter was disabled and stderr is ignored by the test. - - - - - b1f2f91c by Matthew Pickering at 2026-03-15T13:51:53+00:00 packaging: correctly propagate build/host/target to bindist configure script At the moment the host and target which we will produce a compiler for is fixed at the initial configure time. Therefore we need to persist the choice made at this time into the installation bindist as well so we look for the right tools, with the right prefixes at install time. In the future, we want to provide a bit more control about what kind of bindist we produce so the logic about what the host/target will have to be written by hadrian rather than persisted by the configure script. In particular with cross compilers we want to either build a normal stage 2 cross bindist or a stage 3 bindist, which creates a bindist which has a native compiler for the target platform. Fixes #21970 - - - - - 4317263b by Matthew Pickering at 2026-03-15T13:51:53+00:00 hadrian: Fill in more of the default.host toolchain file When you are building a cross compiler this file will be used to build stage1 and it's libraries, so we need enough information here to work accurately. There is still more work to be done (see for example, word size is still fixed). - - - - - fb670908 by Matthew Pickering at 2026-03-15T13:51:53+00:00 hadrian: Disable docs when cross compiling Before there were a variety of ad-hoc places where doc building was disabled when cross compiling. * Some CI jobs sets --docs=none in gen_ci.hs * Some CI jobs set --docs=none in .gitlab/ci.sh * There was some logic in hadrian to not need the ["docs"] target when making a bindist. Now the situation is simple: * If you are cross compiling then defaultDocsTargets is empty by default. In theory, there is no reason why we can't build documentation for cross compiler bindists, but this is left to future work to generalise the documentation building rules to allow this (#24289) - - - - - da3f12db by Matthew Pickering at 2026-03-15T13:56:30+00:00 hadrian: Build stage 2 cross compilers * Most of hadrian is abstracted over the stage in order to remove the assumption that the target of all stages is the same platform. This allows the RTS to be built for two different targets for example. * Abstracts the bindist creation logic to allow building either normal or cross bindists. Normal bindists use stage 1 libraries and a stage 2 compiler. Cross bindists use stage 2 libararies and a stage 2 compiler. * hadrian: Make binary-dist-dir the default build target. This allows us to have the logic in one place about which libraries/stages to build with cross compilers. Fixes #24192 New hadrian target: * `binary-dist-dir-cross`: Build a cross compiler bindist (compiler = stage 1, libraries = stage 2) This commit also contains various changes to make stage2 compilers feasible. ------------------------- Metric Decrease: ManyAlternatives MultiComponentModulesRecomp MultiLayerModulesRecomp T10421 T12425 T12707 T13035 T13379 T15703 T16577 T18698a T18698b T18923 T1969 T21839c T3294 T4801 T5030 T5321Fun T5642 T783 T9198 T9872d T9961 parsing001 T5321FD T6048 T12227 T18140 T18282 T9233 T5631 T9630 ------------------------- Co-authored-by: Sven Tennie <sven.tennie@gmail.com> Fix rebase: settings-use-distro-mingw is now staged - - - - - a9bbbe57 by Matthew Pickering at 2026-03-15T13:56:30+00:00 ci: Test cross bindists We remove the special logic for testing in-tree cross compilers and instead test cross compiler bindists, like we do for all other platforms. - - - - - 4fa238c0 by Matthew Pickering at 2026-03-15T13:56:30+00:00 ci: Introduce CROSS_STAGE variable In preparation for building and testing stage3 bindists we introduce the CROSS_STAGE variable which is used by a CI job to determine what kind of bindist the CI job should produce. At the moment we are only using CROSS_STAGE=2 but in the future we will have some jobs which set CROSS_STAGE=3 to produce native bindists for a target, but produced by a cross compiler, which can be tested on by another CI job on the native platform. CROSS_STAGE=2: Build a normal cross compiler bindist CROSS_STAGE=3: Build a stage 3 bindist, one which is a native compiler and library for the target - - - - - f22c29af by Matthew Pickering at 2026-03-15T13:56:30+00:00 hadrian: Refactor system-cxx-std-lib rules0 I noticed a few things wrong with the hadrian rules for `system-cxx-std-lib` rules. * For `text` there is an ad-hoc check to depend on `system-cxx-std-lib` outside of `configurePackage`. * The `system-cxx-std-lib` dependency is not read from cabal files. * Recache is not called on the packge database after the `.conf` file is generated, a more natural place for this rule is `registerRules`. Treating this uniformly like other packages is complicated by it not having any source code or a cabal file. However we can do a bit better by reporting the dependency firstly in `PackageData` and then needing the `.conf` file in the same place as every other package in `configurePackage`. Fixes #25303 - - - - - 463ca629 by Sven Tennie at 2026-03-15T13:56:30+00:00 ci: Increase timeout for emulators Test runs with emulators naturally take longer than on native machines. Generate jobs.yml - - - - - dbc771de by Sven Tennie at 2026-03-15T13:56:30+00:00 ghc: Distinguish between having an interpreter and having an internal one Otherwise, we fail with warnings when compiling tools. Actually, these are related but different things: - ghc can run an interpreter (either internal or external) - ghc is compiled with an internal interpreter - - - - - 422f3d11 by Matthew Pickering at 2026-03-15T13:56:30+00:00 ci: Javascript don't set CROSS_EMULATOR There is no CROSS_EMULATOR needed to run javascript binaries, so we don't set the CROSS_EMULATOR to some dummy value. Co-authored-by: Sven Tennie <sven.tennie@gmail.com> - - - - - 49798746 by Sven Tennie at 2026-03-15T13:56:30+00:00 Javascript skip T23697 See #22355 about how HSC2HS and the Javascript target don't play well together. - - - - - d31df22c by Sven Tennie at 2026-03-15T13:56:30+00:00 Mark T24602 as fragile It was skipped before (due to CROSS_EMULATOR being set, which changed for JS), so we don't make things worse by marking it as fragile. - - - - - ea53df5c by Sven Tennie at 2026-03-15T13:56:31+00:00 Windows needs NM_STAGE0 as well The stage0 always needs nm. - - - - - cd11ee30 by Sven Tennie at 2026-03-15T13:59:24+00:00 T17912 sometimes works for windows-validate This seems to be timing related. However, just simply increasing the timeout (sleep) statement of this test didn't help. Maybe, it has been flaky on CI before. - - - - - fc385349 by Sven Tennie at 2026-03-15T13:59:24+00:00 stripping: Not for >= Stage2 cross-compiled Currently, we can only strip objects of the host target. - - - - - 7026f80b by Sven Tennie at 2026-03-15T13:59:24+00:00 hadrian: Improve readability of inTreeCompilerArgs Refer to the stages of executables and libraries. This should express the intention better. - - - - - 92404a3c by Sven Tennie at 2026-03-15T13:59:24+00:00 hadrian: Fix difference between in-tree and out-of-tree GHC test args Done by canonicalizing the package database path. (The issue was a not fully reduced path.) - - - - - adc69eea by Sven Tennie at 2026-03-15T13:59:25+00:00 Add a config flag for LibDir and derived values For cross-compilers, we have to refer to the libs of the succeeding stage. This also affects other files previously relying on top_dir in GHC. - - - - - b630cd8d by Sven Tennie at 2026-03-15T13:59:25+00:00 Rebase fixup - - - - - dc11d2a0 by Sven Tennie at 2026-03-15T13:59:25+00:00 getTestExePath: Cleanup - - - - - 235c4038 by Sven Tennie at 2026-03-15T13:59:25+00:00 Delete obsolete comment - - - - - 39648a40 by Sven Tennie at 2026-03-15T13:59:25+00:00 Rules.Test.testEnv: Improve diff - - - - - f421bb54 by Sven Tennie at 2026-03-15T13:59:25+00:00 includeCcArgs: Align with master - - - - - 82201a13 by Sven Tennie at 2026-03-15T13:59:25+00:00 Move comment about mandatory static and cross - - - - - 278 changed files: - .gitlab-ci.yml - .gitlab/ci.sh - .gitlab/generate-ci/gen_ci.hs - .gitlab/jobs.yaml - compiler/GHC/Builtin/Names/TH.hs - compiler/GHC/ByteCode/Linker.hs - compiler/GHC/Cmm/Utils.hs - compiler/GHC/Core/Opt/DmdAnal.hs - compiler/GHC/Driver/Config/Interpreter.hs - compiler/GHC/Driver/DynFlags.hs - compiler/GHC/Driver/Main.hs - compiler/GHC/Driver/Pipeline.hs - compiler/GHC/Driver/Session.hs - compiler/GHC/Iface/Ext/Utils.hs - compiler/GHC/Iface/Recomp.hs - compiler/GHC/Linker/Loader.hs - compiler/GHC/Runtime/Interpreter/Init.hs - compiler/GHC/Runtime/Interpreter/Types.hs - compiler/GHC/Settings.hs - compiler/GHC/Settings/IO.hs - compiler/GHC/Stg/Pipeline.hs - compiler/GHC/Stg/Unarise.hs - compiler/GHC/StgToCmm/Prim.hs - compiler/GHC/StgToJS/Object.hs - compiler/GHC/Tc/Gen/Foreign.hs - compiler/GHC/Tc/Instance/Typeable.hs - compiler/GHC/Types/Demand.hs - configure.ac - distrib/configure.ac.in - docs/users_guide/exts/pragmas.rst - docs/users_guide/exts/rewrite_rules.rst - ghc/GHC/Driver/Session/Mode.hs - ghc/GHCi/UI.hs - ghc/Main.hs - ghc/ghc-bin.cabal.in - hadrian/README.md - hadrian/bindist/Makefile - hadrian/bindist/config.mk.in - hadrian/bootstrap/generate_bootstrap_plans - hadrian/bootstrap/plan-9_10_1.json - hadrian/bootstrap/plan-9_10_2.json - hadrian/bootstrap/plan-9_10_3.json - hadrian/bootstrap/plan-9_12_1.json - hadrian/bootstrap/plan-9_12_2.json - + hadrian/bootstrap/plan-9_14_1.json - hadrian/bootstrap/plan-bootstrap-9_10_1.json - hadrian/bootstrap/plan-bootstrap-9_10_2.json - hadrian/bootstrap/plan-bootstrap-9_10_3.json - hadrian/bootstrap/plan-bootstrap-9_12_1.json - hadrian/bootstrap/plan-bootstrap-9_12_2.json - + hadrian/bootstrap/plan-bootstrap-9_14_1.json - hadrian/build-cabal - hadrian/cabal.project - hadrian/cfg/default.host.target.in - + hadrian/cfg/system.config.host.in - hadrian/cfg/system.config.in - + hadrian/cfg/system.config.target.in - hadrian/doc/flavours.md - hadrian/hadrian.cabal - hadrian/src/Base.hs - + hadrian/src/BindistConfig.hs - hadrian/src/Builder.hs - hadrian/src/Context.hs - hadrian/src/Expression.hs - hadrian/src/Flavour.hs - hadrian/src/Flavour/Type.hs - hadrian/src/Hadrian/Builder.hs - hadrian/src/Hadrian/Haskell/Cabal/Parse.hs - hadrian/src/Hadrian/Haskell/Cabal/Type.hs - hadrian/src/Hadrian/Haskell/Hash.hs - hadrian/src/Hadrian/Oracles/TextFile.hs - hadrian/src/Oracles/Flag.hs - hadrian/src/Oracles/Flavour.hs - hadrian/src/Oracles/Setting.hs - hadrian/src/Oracles/TestSettings.hs - hadrian/src/Packages.hs - hadrian/src/Rules.hs - hadrian/src/Rules/BinaryDist.hs - hadrian/src/Rules/CabalReinstall.hs - hadrian/src/Rules/Compile.hs - hadrian/src/Rules/Documentation.hs - hadrian/src/Rules/Generate.hs - hadrian/src/Rules/Gmp.hs - hadrian/src/Rules/Library.hs - hadrian/src/Rules/Program.hs - hadrian/src/Rules/Register.hs - hadrian/src/Rules/Test.hs - hadrian/src/Settings.hs - hadrian/src/Settings/Builders/Cabal.hs - hadrian/src/Settings/Builders/Common.hs - hadrian/src/Settings/Builders/Configure.hs - hadrian/src/Settings/Builders/DeriveConstants.hs - hadrian/src/Settings/Builders/Ghc.hs - hadrian/src/Settings/Builders/Hsc2Hs.hs - hadrian/src/Settings/Builders/RunTest.hs - hadrian/src/Settings/Builders/SplitSections.hs - hadrian/src/Settings/Default.hs - − hadrian/src/Settings/Flavours/Benchmark.hs - hadrian/src/Settings/Flavours/Development.hs - hadrian/src/Settings/Flavours/GhcInGhci.hs - hadrian/src/Settings/Flavours/Performance.hs - hadrian/src/Settings/Flavours/Quick.hs - hadrian/src/Settings/Flavours/QuickCross.hs - hadrian/src/Settings/Flavours/Quickest.hs - hadrian/src/Settings/Flavours/Validate.hs - hadrian/src/Settings/Packages.hs - hadrian/src/Settings/Program.hs - hadrian/src/Settings/Warnings.hs - libraries/base/changelog.md - libraries/base/src/GHC/Fingerprint.hs - libraries/base/src/GHC/ResponseFile.hs - libraries/base/src/GHC/Stats.hs - libraries/base/src/GHC/Weak.hs - libraries/base/src/GHC/Weak/Finalize.hs - − libraries/base/src/GHC/Weak/Finalizehs - libraries/base/src/System/Exit.hs - libraries/base/src/System/IO/OS.hs - libraries/base/src/System/Mem/Weak.hs - libraries/base/tests/IO/T17912.hs - libraries/base/tests/IO/T18832.hs - libraries/base/tests/IO/all.T - libraries/base/tests/all.T - libraries/ghc-boot-th/GHC/Boot/TH/Quote.hs - libraries/ghc-heap/GHC/Exts/Heap/Closures.hs - libraries/ghc-internal/CHANGELOG.md - libraries/ghc-internal/cbits/Stack.cmm - libraries/ghc-internal/ghc-internal.cabal.in - − libraries/ghc-internal/src/GHC/Internal/Conc/Sync.hs-boot - libraries/ghc-internal/src/GHC/Internal/Control/Exception/Base.hs - libraries/ghc-internal/src/GHC/Internal/Data/Version.hs - libraries/ghc-internal/src/GHC/Internal/Fingerprint.hs - libraries/ghc-internal/src/GHC/Internal/GHCi/Helpers.hs - libraries/ghc-internal/src/GHC/Internal/IO.hs - − libraries/ghc-internal/src/GHC/Internal/IO/Handle/Text.hs-boot - − libraries/ghc-internal/src/GHC/Internal/ResponseFile.hs - libraries/ghc-internal/src/GHC/Internal/Stack/Decode.hs - libraries/ghc-internal/src/GHC/Internal/Stats.hsc - − libraries/ghc-internal/src/GHC/Internal/System/Exit.hs - − libraries/ghc-internal/src/GHC/Internal/System/IO/OS.hs - libraries/ghc-internal/src/GHC/Internal/TH/Monad.hs - − libraries/ghc-internal/src/GHC/Internal/TH/Quote.hs - libraries/ghc-internal/src/GHC/Internal/TopHandler.hs - libraries/ghc-internal/src/GHC/Internal/Weak.hs - libraries/ghc-internal/src/GHC/Internal/Weak/Finalize.hs - libraries/template-haskell-quasiquoter - libraries/template-haskell/Language/Haskell/TH/Quote.hs - libraries/template-haskell/Language/Haskell/TH/Syntax.hs - m4/fp_find_nm.m4 - m4/fptools_set_platform_vars.m4 - m4/prep_target_file.m4 - nofib - rts/PrimOps.cmm - rts/RtsSymbols.c - rts/Stats.c - rts/StgMiscClosures.cmm - rts/Threads.c - rts/Threads.h - rts/include/RtsAPI.h - rts/include/rts/Threads.h - rts/include/stg/MiscClosures.h - testsuite/.gitignore - testsuite/ghc-config/ghc-config.hs - testsuite/tests/annotations/should_run/all.T - testsuite/tests/codeGen/should_compile/Makefile - + testsuite/tests/codeGen/should_compile/T25650.hs - + testsuite/tests/codeGen/should_compile/T25650.stdout-ws-32 - + testsuite/tests/codeGen/should_compile/T25650.stdout-ws-64 - testsuite/tests/codeGen/should_compile/all.T - + testsuite/tests/corelint/T15907.hs - + testsuite/tests/corelint/T15907A.hs - testsuite/tests/corelint/all.T - testsuite/tests/deSugar/should_compile/T16615.stderr - testsuite/tests/deSugar/should_compile/T2431.stderr - + testsuite/tests/dependent/should_fail/T15588.hs - + testsuite/tests/dependent/should_fail/T15588.stderr - testsuite/tests/dependent/should_fail/all.T - testsuite/tests/dmdanal/should_compile/T16029.stdout - testsuite/tests/dmdanal/should_compile/T18894.stderr - + testsuite/tests/dmdanal/should_run/M1.hs - + testsuite/tests/dmdanal/should_run/T26416.hs - + testsuite/tests/dmdanal/should_run/T26416.stdout - testsuite/tests/dmdanal/should_run/all.T - testsuite/tests/dmdanal/sigs/T21081.stderr - − testsuite/tests/driver/OneShotTH.stdout-javascript-unknown-ghcjs - + testsuite/tests/driver/T2057/Makefile - + testsuite/tests/driver/T2057/README.md - + testsuite/tests/driver/T2057/T2057.stderr - + testsuite/tests/driver/T2057/all.T - + testsuite/tests/driver/T2057/app/Main.hs - + testsuite/tests/driver/T2057/pkgA1/A.hs - + testsuite/tests/driver/T2057/pkgA1/pkg.conf - + testsuite/tests/driver/T2057/pkgA2/A.hs - + testsuite/tests/driver/T2057/pkgA2/pkg.conf - + testsuite/tests/driver/T2057/pkgB/B.hs - + testsuite/tests/driver/T2057/pkgB/pkg.conf - + testsuite/tests/driver/T20604/T20604.stdout-javascript-unknown-ghcjs - testsuite/tests/driver/T20604/all.T - testsuite/tests/driver/all.T - testsuite/tests/driver/fat-iface/fat010.stdout-javascript-unknown-ghcjs - testsuite/tests/driver/recomp011/all.T - testsuite/tests/driver/recompHash/recompHash.stdout-javascript-unknown-ghcjs - testsuite/tests/driver/recompNoTH/recompNoTH.stdout-javascript-unknown-ghcjs - − testsuite/tests/driver/th-new-test/th-new-test.stdout-javascript-unknown-ghcjs - + testsuite/tests/exceptions/T26759.hs - + testsuite/tests/exceptions/T26759.stderr - + testsuite/tests/exceptions/T26759a.hs - + testsuite/tests/exceptions/T26759a.stderr - + testsuite/tests/exceptions/T26759a.stdout - testsuite/tests/exceptions/all.T - testsuite/tests/ffi/should_compile/all.T - + testsuite/tests/ffi/should_run/PrimFFIUnboxedSum.hs - + testsuite/tests/ffi/should_run/PrimFFIUnboxedSum.stdout - + testsuite/tests/ffi/should_run/PrimFFIUnboxedSum_cmm.cmm - testsuite/tests/ffi/should_run/all.T - testsuite/tests/ghc-e/should_fail/all.T - + testsuite/tests/ghci-wasm/T26998.hs - testsuite/tests/ghci-wasm/all.T - + testsuite/tests/ghci/scripts/T24632.hs - + testsuite/tests/ghci/scripts/T24632.script - + testsuite/tests/ghci/scripts/T24632.stdout - testsuite/tests/ghci/scripts/all.T - testsuite/tests/interface-stability/ghc-experimental-exports.stdout - testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32 - testsuite/tests/javascript/closure/all.T - testsuite/tests/javascript/js-mk_tup.hs - testsuite/tests/javascript/js-mk_tup.stdout - testsuite/tests/linters/Makefile - testsuite/tests/numeric/should_compile/T14170.stdout - testsuite/tests/numeric/should_compile/T14465.stdout - testsuite/tests/numeric/should_compile/T7116.stdout - testsuite/tests/perf/compiler/T9675.hs - + testsuite/tests/perf/should_run/T1216.hs - + testsuite/tests/perf/should_run/T1216.stdout - testsuite/tests/perf/should_run/all.T - testsuite/tests/plugins/plugins10.stdout - + testsuite/tests/polykinds/T18186.hs - + testsuite/tests/polykinds/T18186.stderr - testsuite/tests/polykinds/all.T - testsuite/tests/quotes/QQError.stderr - testsuite/tests/roles/should_compile/Roles1.stderr - testsuite/tests/roles/should_compile/Roles13.stderr - testsuite/tests/roles/should_compile/Roles14.stderr - testsuite/tests/roles/should_compile/Roles2.stderr - testsuite/tests/roles/should_compile/Roles3.stderr - testsuite/tests/roles/should_compile/Roles4.stderr - testsuite/tests/roles/should_compile/T8958.stderr - testsuite/tests/simplCore/should_compile/OpaqueNoCastWW.stderr - + testsuite/tests/simplCore/should_compile/T12640.hs - + testsuite/tests/simplCore/should_compile/T12640.stderr - + testsuite/tests/simplCore/should_compile/T14908.hs - + testsuite/tests/simplCore/should_compile/T14908_Deps.hs - + testsuite/tests/simplCore/should_compile/T16122.hs - + testsuite/tests/simplCore/should_compile/T16122.stderr - testsuite/tests/simplCore/should_compile/T3717.stderr - testsuite/tests/simplCore/should_compile/T3772.stdout - testsuite/tests/simplCore/should_compile/T4908.stderr - testsuite/tests/simplCore/should_compile/T4930.stderr - testsuite/tests/simplCore/should_compile/T7360.stderr - testsuite/tests/simplCore/should_compile/T8274.stdout - testsuite/tests/simplCore/should_compile/T9400.stderr - + testsuite/tests/simplCore/should_compile/T9445.hs - testsuite/tests/simplCore/should_compile/all.T - testsuite/tests/simplCore/should_compile/noinline01.stderr - testsuite/tests/simplCore/should_compile/par01.stderr - testsuite/tests/th/QQTopError.stderr - testsuite/tests/th/TH_Roles2.stderr - testsuite/tests/typecheck/should_compile/T13032.stderr - + testsuite/tests/typecheck/should_compile/T14151.hs - testsuite/tests/typecheck/should_compile/T18406b.stderr - testsuite/tests/typecheck/should_compile/T18529.stderr - testsuite/tests/typecheck/should_compile/all.T - + testsuite/tests/typecheck/should_fail/T12694.hs - + testsuite/tests/typecheck/should_fail/T12694.stderr - + testsuite/tests/typecheck/should_fail/T16275.stderr - + testsuite/tests/typecheck/should_fail/T16275A.hs - + testsuite/tests/typecheck/should_fail/T16275B.hs - + testsuite/tests/typecheck/should_fail/T16275B.hs-boot - testsuite/tests/typecheck/should_fail/all.T The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/f434973e907b3f7e2dd999bc0ff3653... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/f434973e907b3f7e2dd999bc0ff3653... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Sven Tennie (@supersven)