summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* rts: Try applying tags from info tablewip/apply-tagsBen Gamari2019-09-101-4/+12
|
* Make sure all boolean settings entries use `YES` / `NO`John Ericson2019-09-058-35/+34
| | | | | | | | | Some where using `True` / `False`, a legacy of when they were in `Config.hs`. See #16914 / d238d3062a9858 for a similar problem. Also clean up the configure variables names for consistency and clarity while we're at it. "Target" makes clear we are talking about outputted code, not where GHC itself runs.
* Make the C-- O and C types constructors with DataKindsJohn Ericson2019-09-055-18/+31
| | | | | The tightens up the kinds a bit. I use type synnonyms to avoid adding promotion ticks everywhere.
* Few tweaks in -ddump-debug output, minor refactoringÖmer Sinan Ağacan2019-09-022-22/+17
| | | | | | | - Fixes crazy indentation in -ddump-debug output - We no longer dump empty sections in -ddump-debug when a code block does not have any generated debug info - Minor refactoring in Debug.hs and AsmCodeGen.hs
* Use C99 Fixed width types to avoid hack in base's configureJohn Ericson2019-09-015-29/+27
| | | | Define MD5Context in terms of `uint*_t` and don't use `HsFFI.h`.
* cap max stack size at 32 bit limit (#17019)Gershom Bazerman2019-09-011-1/+4
|
* Remove redundant special case in STG pretty-printerÖmer Sinan Ağacan2019-08-311-10/+0
| | | | | | | | | | | | | | | | | | | This special case existed for no reason, and made things inconsistent. Before Boolean.$bT :: Boolean.Boolean [GblId, Str=m, Unf=OtherCon []] = CAF_ccs \ u [] Boolean.$bT1; After Boolean.$bF :: Boolean.Boolean [GblId, Str=m, Unf=OtherCon []] = \u [] Boolean.$bF1; The cost-centre is now hidden when not profiling, as is the case with other types of closures.
* Add additional step to T16804Eric Wolf2019-08-316-198/+889
| | | | | | | | | | | | | | | | Add another small test step Use the same identifier name in different scopes and see, if ':uses' handles that. Add another test step to check wether local bindings with the same identifier name might get confused Add easier to understand test output Fix annotated lines from file correctly
* Remove HsUtils/userHsLTyVarBndrsVladislav Zavialov2019-08-301-12/+1
| | | | | This patch removes 'userHsLTyVarBndrs' and 'userHsTyVarBndrs' from HsUtils. These helper functions were not used anywhere.
* configure.ac: add --enable-numa switchSergei Trofimovich2019-08-301-2/+13
| | | | | | | | | | | | | Before the change ./configure detected numa support automatically withoun a nice way to disable autodetection. The change adds `--enable-numa` / `--disable-numa` switch to override the default. If `--enable-numa` is passed and `libnuma` is not present then configure will fail. Reported-by: Sergey Alirzaev Bug: https://github.com/gentoo-haskell/gentoo-haskell/issues/955 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
* Small optimization in the SRT algorithmÖmer Sinan Ağacan2019-08-291-1/+1
| | | | | | | | | | | | | | | | | | | | | Noticed by @simonmar in !1362: If the srtEntry is Nothing, then it should be safe to omit references to this SRT from other SRTs, even if it is a static function. When updating SRT map we don't omit references to static functions (see Note [Invalid optimisation: shortcutting]), but there's no reason to add an SRT entry for a static function if the function is not CAFFY. (Previously we'd add SRT entries for static functions even when they're not CAFFY) Using 9151b99e I checked sizes of all SRTs when building GHC and containers: - GHC: 583736 (HEAD), 581695 (this patch). 2041 less SRT entries. - containers: 2457 (HEAD), 2381 (this patch). 76 less SRT entries.
* gitlab-ci: Fix URL of Darwin's cabal-install tarballBen Gamari2019-08-292-1/+2
| | | | | This was inadvertently referring to the cabal-install-latest/ directory which is volatile.
* Fix LLVM version check yet againÖmer Sinan Ağacan2019-08-294-47/+52
| | | | | | | | | | | | | | | There were two problems with LLVM version checking: - The parser would only parse x and x.y formatted versions. E.g. 1.2.3 would be rejected. - The version check was too strict and would reject x.y formatted versions. E.g. when we support version 7 it'd reject 7.0 ("LLVM version 7.0") and only accept 7 ("LLVM version 7"). We now parse versions with arbitrarily deep minor numbering (x.y.z.t...) and accept versions as long as the major version matches the supported version (e.g. 7.1, 7.1.2, 7.1.2.3 ...).
* Remove Unused flag -ddump-shape [skip ci]luca2019-08-281-4/+0
|
* Balance parentheses in GHC 8.10.1 release notesRyan Scott2019-08-281-3/+3
| | | | [ci skip]
* Fix #17112Sebastian Graf2019-08-283-27/+54
| | | | | | | | | | | | | The `mkOneConFull` function of the pattern match checker used to try to guess the type arguments of the data type's type constructor by looking at the ambient type of the match. This doesn't work well for Pattern Synonyms, where the result type isn't even necessarily a TyCon application, and it shows in #11336 and #17112. Also the effort seems futile; why try to try hard when the type checker has already done the hard lifting? After this patch, we instead supply the type constructors arguments as an argument to the function and lean on the type-annotated AST.
* Return results of Cmm streams in backendsÖmer Sinan Ağacan2019-08-287-46/+72
| | | | | | | | | | | | | | | | | | | This generalizes code generators (outputAsm, outputLlvm, outputC, and the call site codeOutput) so that they'll return the return values of the passed Cmm streams. This allows accumulating data during Cmm generation and returning it to the call site in HscMain. Previously the Cmm streams were assumed to return (), so the code generators returned () as well. This change is required by !1304 and !1530. Skipping CI as this was tested before and I only updated the commit message. [skip ci]
* Remove redundant OPTIONS_GHC in BlockLayout.hsAndreas Klebinger2019-08-271-3/+0
|
* Some tweaks in GHC.Compact haddocksÖmer Sinan Ağacan2019-08-271-14/+17
|
* Some more documentation for typePrimRep1 stuffÖmer Sinan Ağacan2019-08-273-3/+14
| | | | [skip ci]
* configure.ac: fix '--disable-dwarf-debug'Sergei Trofimovich2019-08-231-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before the change ./configure --disable-dwarf-debug enabled DWARF debugging unconditionally. This happened due to use of 5-argument form of `AC_ARG_ENABLE` without actually checking the passed `$enableval` parameter: ``` AC_ARG_ENABLE(dwarf-unwind, [AC_HELP_STRING([--enable-dwarf-unwind], [Enable DWARF unwinding support in the runtime system via elfutils' libdw [default=no]])], [AC_CHECK_LIB(dw, dwfl_attach_state, [UseLibdw=YES], [AC_MSG_ERROR([Cannot find system libdw (required by --enable-dwarf-unwind)])])] [UseLibdw=NO] ) ``` Note: - `[UseLibdw=NO]` is called when `--{enable,disable}-dwarf-unwind` is not passed at all as a parameter (ok). - `[AC_CHECK_LIB(dw, dwfl_attach_state, [UseLibdw=YES],` is called for both: * `--enable-dwarf-unwind` being passed: `$enableval = "yes"` (ok). * --disable-dwarf-unwind` being passed: `$enableval = "no"` (bad). The change is to use 3-argument `AC_ARG_ENABLE` and check for passed value as `"$enable_dwarf_unwind" = "yes"`. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
* Use variable length encoding for Binary instances.Andreas Klebinger2019-08-231-95/+246
| | | | | | | | Use LEB128 encoding for Int/Word variants. This reduces the size of interface files significantly. (~19%). Also includes a few small optimizations to make unboxing work better that I have noticed while looking at the core.
* Make non-streaming LLVM and C backends streamingÖmer Sinan Ağacan2019-08-234-20/+19
| | | | | | | | | This adds a Stream.consume function, uses it in LLVM and C code generators, and removes the use of Stream.collect function which was used to collect streaming Cmm generation results into a list. LLVM and C backends now properly use streamed Cmm generation, instead of collecting Cmm groups into a list before generating LLVM/C code.
* Remove special case in SRT generation with -split-sectionsÖmer Sinan Ağacan2019-08-221-26/+5
| | | | | | | | | Previously we were using an empty ModuleSRTInfo for each Cmm group with -split-section. As far as I can see this has no benefits, and simplifying this makes another patch simpler (!1304). We also remove some outdated comments: we no longer generate one module-level SRT.
* base: Reintroduce fusion for scanrTDecki2019-08-222-1/+46
| | | | While avoiding #16943.
* Add documentation for Hadrian expressionsJames Foster2019-08-222-0/+334
| | | | | This commit adds documentation on Hadrian's 'Expr' type and references the documentation in hadrian/README.md
* Doc: add Haddocks for quotRemWord2 primopSylvain Henry2019-08-221-2/+2
|
* gitlab-ci: Add Windows full build during the nightly pipelineBen Gamari2019-08-221-0/+13
|
* gitlab-ci: Update bootstrap compiled used for Darwin buildsBen Gamari2019-08-191-2/+2
|
* Remove Bag fold specialisations (#16969)Richard Lupton2019-08-1922-75/+50
|
* Use Foldable instance of Bag for specialised Bag folds (#16969)Richard Lupton2019-08-191-19/+26
|
* Re-export foldlM and foldrM from Data.Foldable in MonadUtils (#16969)Richard Lupton2019-08-191-9/+1
|
* Generalized MonadUtils folds to Foldable (#16969)Richard Lupton2019-08-191-6/+5
|
* Fix COMPACT_NFDATA closure size, more CNF sanity checkingÖmer Sinan Ağacan2019-08-182-20/+30
| | | | | | We now do a shallow closure check on objects in compact regions. See the new comment on why we can't do a "normal" closure check.
* expose ModuleInfo.minf_rdr_env for tooling authorsSam Halliday2019-08-181-0/+4
|
* Fix #17067 by making data family type constructors actually injectiveRyan Scott2019-08-183-2/+15
| | | | | | | | `TcTyClsDecls.tcFamDecl1` was using `NotInjective` when creating data family type constructors, which is just plain wrong. This tweaks it to use `Injective` instead. Fixes #17067.
* Typo fix in CoreToStgÖmer Sinan Ağacan2019-08-181-5/+5
|
* Faster exactLog2Sylvain Henry2019-08-181-14/+8
| | | | | | Make `exactLog2` faster (use `countLeadingZeros` and Int32 bit-ops). On my Core i7-9700k Criterion reports ~50% speedup (from 16 to 8ns).
* Document types of LitNumbers, minor refactoring in Literal.hsÖmer Sinan Ağacan2019-08-151-10/+28
|
* Cmm: constant folding `quotRem x 2^N`Sylvain Henry2019-08-151-11/+39
| | | | | | `quot` and `rem` are implemented efficiently when the second argument is a constant power of 2. This patch uses the same implementations for `quotRem` primop.
* Make add_info attach unfoldings (#16615)Tobias Dammers2019-08-156-40/+121
|
* Add test cases for #16615Tobias Dammers2019-08-154-0/+43
|
* Remove unused imports of the form 'import foo ()' (Fixes #17065)James Foster2019-08-1535-40/+14
| | | | | | | | | | | These kinds of imports are necessary in some cases such as importing instances of typeclasses or intentionally creating dependencies in the build system, but '-Wunused-imports' can't detect when they are no longer needed. This commit removes the unused ones currently in the code base (not including test files or submodules), with the hope that doing so may increase parallelism in the build system by removing unnecessary dependencies.
* GHCi supports not-necessarily-lifted join pointsRichard Eisenberg2019-08-1410-36/+130
| | | | | | | | | | | | | | | | Fixes #16509. See Note [Not-necessarily-lifted join points] in ByteCodeGen, which tells the full story. This commit also adds some comments and cleans some code in the byte-code generator, as I was exploring around trying to understand it. (This commit removes an old test -- this is really a GHCi problem, not a pattern-synonym problem.) test case: ghci/scripts/T16509
* Use os.devnull instead of '/dev/null' in the testsuite driver.Andreas Klebinger2019-08-141-4/+26
| | | | | | | | | | | | The later caused issues on windows by being translated into "\\dev\\null" and python then trying to open this non-existant file. So we now use os.devnull inside python and convert it to "/dev/null" when calling out to the shell, which is bound to run in a unix like environment. This fixes an issue a test producing unexpected stderr output failed with a framework failure instead of showing a diff of the output.
* Rework the Binary Integer instance.Andreas Klebinger2019-08-141-22/+74
| | | | | | | | | | | | We used to serialise large integers as strings. Now they are serialized as a list of Bytes. This changes the size for a Integer in the higher 64bit range from 77 to 9 bytes when written to disk. The impact on the general case is small (<1% for interface files) as we don't use many Integers. But for code that uses many this should be a nice benefit.
* Fix binary distributionTamar Christina2019-08-131-1/+0
|
* Add Foldable, Traversable instances for Uniq(D)FMSebastian Graf2019-08-132-4/+38
| | | | | The `UniqDFM` is deterministic, of course, while we provide an unsafe `NonDetUniqFM` wrapper for `UniqFM` to opt into nondeterministic instances.
* Reformat comments in StgSynÖmer Sinan Ağacan2019-08-101-158/+141
| | | | | | | This does not make any changes in the contents -- formatting only. Previously the comments were too noisy and I've always found it very hard to read. Hopefully it's easier to read now.
* Add test for #16893Ömer Sinan Ağacan2019-08-103-0/+93
|