summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* hiwip/tmpBen Gamari2022-04-061-1/+5
|
* Merge branch 'wip/T21295' into wip/windows-clang-joinBen Gamari2022-04-019-36/+44
|\
| * Bump text submodule to current `master`wip/T21295Ben Gamari2022-03-311-0/+0
| | | | | | | | Addresses #21295.
| * gitlab-ci: Bump bootstrap compiler to 9.2.2Ben Gamari2022-03-315-10/+11
| | | | | | | | | | | | This is necessary to build recent `text` commits. Bumps Hackage index state for a hashable which builds with GHC 9.2.
| * Fix a few new warnings when booting with GHC 9.2.2Ben Gamari2022-03-314-6/+18
| | | | | | | | | | -Wuni-incomplete-patterns and apparent improvements in the pattern match checker surfaced these.
| * gitlab/darwin: Factor out bindistsBen Gamari2022-03-311-13/+12
| | | | | | | | This makes it a bit easier to bump them.
| * gitlab-ci: Drop dead HACKAGE_INDEX_STATE variableBen Gamari2022-03-311-2/+0
| |
| * hadrian: Clean up flavour transformer definitionsBen Gamari2022-03-311-8/+6
| | | | | | | | | | Previously the `ipe` and `omit_pragmas` transformers were hackily defined using the textual key-value syntax. Fix this.
| |
| \
| \
| \
| \
| \
*-----. \ Merge branches 'wip/windows-high-codegen', 'wip/windows-high-linker', ↵Ben Gamari2022-04-01182-1891/+2939
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | 'wip/windows-clang-2' and 'wip/object-merging-via-archives', remote-tracking branch 'origin/wip/T20724' into wip/windows-clang-join
| | | | * | Disable text's dependency on simdutf by defaultwip/T20724Ben Gamari2022-03-242-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately we are simply not currently in a good position to robustly ship binary distributions which link against C++ code like simdutf. Fixes #20724.
| | | | * | hadrian: Flag cabal flag handlingMatthew Pickering2022-03-231-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch basically deletes some ad-hoc handling of Cabal Flags and replaces it with a correct query of the LocalBuildInfo. The flags in the local build info can be modified by users by passing hadrian options For example (!4331) ``` *.genapply.cabal.configure.opts += --flags=unregisterised ``` And all the flags specified by the `Cabal Flags` builder were already passed to configure properly using `--flags`.
| | | * | | Build ar archives with -L when "joining" objectsBen Gamari2022-04-018-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | Since there may be .o files which are in fact archives.
| | | * | | Add a Note describing lack of object merging on WindowsBen Gamari2022-04-014-8/+39
| | | | | | | | | | | | | | | | | | | | | | | | See #21068.
| | | * | | hadrian: Produce ar archives with L modifier on WindowsBen Gamari2022-04-015-1/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since object files may in fact be archive files, we must ensure that their contents are merged rather than constructing an archive-of-an-archive. See #21068.
| | | * | | hadrian: Refactor handling of ar flagsBen Gamari2022-04-015-31/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the setup was quite fragile as it had to assume which arguments were file arguments and which were flags.
| | | * | | driver: Make object merging optionalBen Gamari2022-04-015-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows we don't have a linker which supports object joining (i.e. the `-r` flag). Consequently, `-pgmlm` is now a `Maybe`. See #21068.
| | | * | | rts/linker: Catch archives masquerading as object filesBen Gamari2022-04-013-2/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Check the file's header to catch static archive bearing the `.o` extension, as may happen on Windows after the Clang refactoring. See #21068
| | | * | | Use static archives as an alternative to object mergingBen Gamari2022-04-013-8/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately, `lld`'s COFF backend does not currently support object merging. With ld.bfd having broken support for high image-load base addresses, it's necessary to find an alternative. Here I introduce support in the driver for generating static archives, which we use on Windows instead of object merging. Closes #21068.
| | | * | | Refactor handling of global initializersBen Gamari2022-04-0117-89/+372
| | | | |/ | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | Here we rework the handling of global initializers to ensure that the initializer stub object is not dropped if linked in a static library. See #21068.
| | * | | testsuite: Mark T13366Cxx, T10420 as broken on WindowsBen Gamari2022-04-012-2/+4
| | | | | | | | | | | | | | | | | | | | Due to #21322.
| | * | | testsuite: Mark TH_spliceE5_prof as unbroken on WindowsBen Gamari2022-03-301-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was previously failing due to #18721 and now passes with the new toolchain. Closes #18721.
| | * | | linker/PEi386: More descriptive error messageBen Gamari2022-03-301-1/+1
| | | | |
| | * | | hadrian: Build wrappers using ghc rather than ccBen Gamari2022-03-301-2/+2
| | | | | | | | | | | | | | | | | | | | (cherry picked from commit 4047b0e25f73d7c74baffb2618fe6a6133a65e51)
| | * | | Bump text submoduleBen Gamari2022-03-301-0/+0
| | | | |
| | * | | Bump bytestring submoduleBen Gamari2022-03-301-0/+0
| | | | |
| | * | | hadrian: Disable ghci libraries when object merging is not availableBen Gamari2022-03-303-7/+21
| | | | |
| | * | | Bump process submoduleBen Gamari2022-03-301-0/+0
| | | | | | | | | | | | | | | | | | | | Fixes missing TEST_CC_OPTS in testsuite tests.
| | * | | Bump Cabal submoduleBen Gamari2022-03-301-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Disable support for library-for-ghci on Windows as described in #21068. - Teach Cabal to use `ar -L` when available
| | * | | testsuite/driver: Treat framework failures of fragile tests as non-fatalBen Gamari2022-03-301-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we would report framework failures of tests marked as fragile as failures. Now we rather treat them as fragile test failures, which are not fatal to the testsuite run. Noticed while investigating #21293.
| | * | | testsuite: Mark test-defaulting-plugin as fragile on WindowsBen Gamari2022-03-301-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Currently llvm-ar does not handle long file paths, resulting in occassional failures of these tests and #21293.
| | * | | testsuite: Provide module definitions in T10955dynBen Gamari2022-03-304-7/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise the linker will export all symbols, including those provided by the RTS, from the produced shared object. Consequently, attempting to link against multiple objects simultaneously will cause the linker to complain that RTS symbols are multiply defined. Avoid this by limiting the DLL exports with a module definition file.
| | * | | testsuite: Fix mk-big-objBen Gamari2022-03-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | I'm a bit unclear on how this previously worked as it attempted to build an executable without defining `main`.
| | * | | testsuite: Split T13366 into two testsBen Gamari2022-03-305-17/+30
| | | | | | | | | | | | | | | | | | | | | | | | | Split up the C and C++ uses since the latter is significantly more platform-dependent.
| | * | | testsuite: Clean up tests depending on C++ std libBen Gamari2022-03-308-21/+10
| | | | |
| | * | | testsuite: Rework T13606 to avoid gcc dependenceBen Gamari2022-03-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Previously we used libgcc_s's import library in T13606. However, now that we ship with clang we no longer have this library. Instead we now use gdi32.
| | * | | testsuite: Mark FloatFnInverses as fixedBen Gamari2022-03-301-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new toolchain has fixed it. Closes #15670.
| | * | | testsuite: Mark T9405 as fixed on WindowsBen Gamari2022-03-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have not seen it fail since moving to clang. Closes #12714.
| | * | | testsuite: Mark Windows as a libc++ platformBen Gamari2022-03-301-0/+2
| | | | |
| | * | | testsuite: Port T16514 to CBen Gamari2022-03-303-46/+32
| | | | | | | | | | | | | | | | | | | | | | | | | Previously this test was C++ which made it a bit of a portability problem.
| | * | | Drop -static-libgccBen Gamari2022-03-301-28/+2
| | | | | | | | | | | | | | | | | | | | This flag is not applicable when Clang is used.
| | * | | testsuite: Test that we can build bigobj PE objectsBen Gamari2022-03-302-0/+12
| | | | |
| | * | | Windows/Clang: Build system adaptationBen Gamari2022-03-307-268/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Bump win32-tarballs to 0.7 * Move Windows toolchain autoconf logic into separate file * Use clang and LLVM utilities as described in #21019 * Disable object merging as lld doesn't support -r * Drop --oformat=pe-bigobj-x86-64 arguments from ld flags as LLD detects that the output is large on its own. * Drop gcc wrapper since Clang finds its root fine on its own.
| | * | | driver: Drop hacks surrounding windres invocationBen Gamari2022-03-301-16/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Drop hack for #1828, among others as they appear to be unnecessary when using `llvm-windres`.
| | * | | rts: Eliminate use of nested functionsGHC GitLab CI2022-03-301-9/+11
| | |/ / | | | | | | | | | | | | This is a gcc-specific extension.
| | * | Refactor: make primtypes independent of PrimRepsKrzysztof Gogolewski2022-03-305-126/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, 'pcPrimTyCon', the function used to define a primitive type, was taking a PrimRep, only to convert it to a RuntimeRep. Now it takes a RuntimeRep directly. Moved primRepToRuntimeRep to GHC.Types.RepType. It is now located next to its inverse function runtimeRepPrimRep. Now GHC.Builtin.Types.Prim no longer mentions PrimRep, and GHC.Types.RepType no longer imports GHC.Builtin.Types.Prim. Removed unused functions `primRepsToRuntimeRep` and `mkTupleRep`. Removed Note [PrimRep and kindPrimRep] - it was never referenced, didn't belong to Types.Prim, and Note [Getting from RuntimeRep to PrimRep] is more comprehensive.
| | * | Fix reference to Note [FunBind vs PatBind]Ben Gamari2022-03-301-2/+2
| | | | | | | | | | | | | | | | | | | | This Note was renamed in 2535a6716202253df74d8190b028f85cc6d21b72 yet this occurrence was not updated.
| | * | Give parsing plugins access to errorsJakob Brünker2022-03-3018-22/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, when the parser produced non-fatal errors (i.e. it produced errors but the 'PState' is 'POk'), compilation would be aborted before the 'parsedResultAction' of any plugin was invoked. This commit changes that, so that such that 'parsedResultAction' gets collections of warnings and errors as argument, and must return them after potentially modifying them. Closes #20803
| | * | Add test for T21306Matthew Pickering2022-03-293-0/+55
| | | | | | | | | | | | | | | | Fixes #21306
| | * | RTS: Zero gc_cpu_start and gc_cpu_end after accountingMatthew Pickering2022-03-291-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When passed a combination of `-N` and `-qn` options the cpu time for garbage collection was being vastly overcounted because the counters were not being zeroed appropiately. When -qn1 is passed, only 1 of the N avaiable GC threads is chosen to perform work, the rest are idle. At the end of the GC period, stat_endGC traverses all the GC threads and adds up the elapsed time from each of them. For threads which didn't participate in this GC, the value of the cpu time should be zero, but before this patch, the counters were not zeroed and hence we would count the same elapsed time on many subsequent iterations (until the thread participated in a GC again). The most direct way to zero these fields is to do so immediately after the value is added into the global counter, after which point they are never used again. We also tried another approach where we would zero the counter in yieldCapability but there are some (undiagnosed) siations where a capbility would not pass through yieldCapability before the GC ended and the same double counting problem would occur. Fixes #21082
| | * | Hadrian: make DDEBUG separate from debugged RTSsheaf2022-03-298-36/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patchs separates whether -DDEBUG is enabled (i.e. whether debug assertions are enabled) from whether we are using the debugged RTS (i.e. GhcDebugged = YES). This means that we properly skip tests which have been marked with `when(compiler_debugged(), skip)`. Fixes #21113, #21153 and #21234