summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* hadrian: Pass input file to makeindexwip/fix-makeindexBen Gamari2020-09-021-1/+1
| | | | | | Strangely I find that on Alpine (and apparently only on Alpine) the latex makeindex command expects to be given a filename, lest it reads from stdin.
* Remove "Ord FastString" instanceSylvain Henry2020-09-0132-113/+237
| | | | | | | | | | | | | | | | | | | FastStrings can be compared in 2 ways: by Unique or lexically. We don't want to bless one particular way with an "Ord" instance because it leads to bugs (#18562) or to suboptimal code (e.g. using lexical comparison while a Unique comparison would suffice). UTF-8 encoding has the advantage that sorting strings by their encoded bytes also sorts them by their Unicode code points, without having to decode the actual code points. BUT GHC uses Modified UTF-8 which diverges from UTF-8 by encoding \0 as 0xC080 instead of 0x00 (to avoid null bytes in the middle of a String so that the string can still be null-terminated). This patch adds a new `utf8CompareShortByteString` function that performs sorting by bytes but that also takes Modified UTF-8 into account. It is much more performant than decoding the strings into [Char] to perform comparisons (which we did in the previous patch). Bump haddock submodule
* Fix FastString lexicographic ordering (fix #18562)Sylvain Henry2020-09-014-1/+11
|
* Bignum: add BigNat compat functions (#18613)Sylvain Henry2020-08-311-0/+54
|
* Limit upper version of Happy for ghc-9.2 (#18620)Takenobu Tani2020-08-312-3/+3
| | | | | | | | This patch adds the upper bound of a happy version for ghc-9.2. Currently, We can use happy-1.19 or happy-1.20 for ghc-9.2. See #18620.
* Limit upper version of Happy for ghc-9.0 and earlier (#18620)Takenobu Tani2020-08-312-1/+3
| | | | | | | | | This patch adds the upper bound of a happy version for ghc-9.0 and earlier. Currently, we can't use happy-1.20.0 for ghc-9.0. See #18620.
* Ignore more filesSven Tennie2020-08-311-2/+9
| | | | | Ignore files from "new style" cabal builds (dist-newstyle folders) and from clangd (C language server).
* Set the dynamic-system-linker flag to ManualMoritz Angermann2020-08-311-1/+1
| | | | This flag should be user controllable, hence Manual: True.
* Fix documentation and fix "check" bignum backend (#18604)Sylvain Henry2020-08-315-19/+19
|
* Don't store HomeUnit in UnitConfigSylvain Henry2020-08-311-17/+22
| | | | | Allow the creation of a UnitConfig (hence of a UnitState) without having a HomeUnit. It's required for #14335.
* [fixup 3433] move debugBelch into IF_DEBUG(linker)Moritz Angermann2020-08-311-2/+3
| | | | | | | | The commit in dff1cb3d9c111808fec60190747272b973547c52 incorrectly left the `debugBelch` function without a comment or IF_DEBUG(linker,) decoration. This rectifies it. Needs at least a 8.10 backport, as it was backported in 6471cc6aff80d5deebbdb1bf7b677b31ed2af3d5
* Dominators.hs: Use unix line endingsAndreas Klebinger2020-08-311-563/+563
|
* Update dominator code with fixes from the dom-lt package.Andreas Klebinger2020-08-311-83/+49
| | | | | Two bugs turned out in the package that have been fixed since. This MR includes this fixes in the GHC port of the code.
* Hadrian: fix slow-validate flavour (#18586)Sylvain Henry2020-08-311-1/+6
|
* Bump Win32 and process submodulesBen Gamari2020-08-312-0/+0
|
* Add additional tests for #18172 (Followup MR 3543)Roland Senn2020-08-313-0/+22
| | | | | | | There was still one active discussion [thread](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3543#note_284325) when MR !3543 got merged. This MR adds the requested tests exercising the changes in `compiler/GHC/HsToCore/Match/Literal.hs:warnAboutEmptyEnumerations` and its sub-functions.
* Add tests for #15617.Roland Senn2020-08-313-0/+9
| | | | Avoid a similar regression in the future.
* base: Better error message on invalid getSystemTimerManager callBen Gamari2020-08-311-2/+4
| | | | | | | | | Previously we would produce a rather unhelpful pattern match failure error in the case where the user called `getSystemTimerManager` in a program which isn't built with `-threaded`. This understandably confused the user in #15616. Fixes #15616.
* document how build system find toolchains on WindowsTamar Christina2020-08-288-12/+83
|
* Fix use distro toolchianTamar Christina2020-08-288-4/+19
|
* Add missing primop documentation (#18454)Krzysztof Gogolewski2020-08-288-56/+137
| | | | | | | | | | | | | | | - Add three pseudoops to primops.txt.pp, so that Haddock renders the documentation - Update comments - Remove special case for "->" - it's no longer exported from GHC.Prim - Remove reference to Note [Compiling GHC.Prim] - the ad-hoc fix is no longer there after updates to levity polymorphism. - Document GHC.Prim - Remove the comment that lazy is levity-polymorphic. As far as I can tell, it never was: in 80e399639, only the unfolding was given an open type variable. - Remove haddock hack in GHC.Magic - no longer neccessary after adding realWorld# to primops.txt.pp.
* Make {hsExpr,hsType,pat}NeedsParens aware of boxed 1-tuplesRyan Scott2020-08-276-1/+53
| | | | | | | | | | | | `hsExprNeedsParens`, `hsTypeNeedsParens`, and `patNeedsParens` previously assumed that all uses of explicit tuples in the source syntax never need to be parenthesized. This is true save for one exception: boxed one-tuples, which use the `Solo` data type from `GHC.Tuple` instead of special tuple syntax. This patch adds the necessary logic to the three `*NeedsParens` functions to handle `Solo` correctly. Fixes #18612.
* Consolidate imports in getMinimalImports (#18264)Aditya Gupta2020-08-275-3/+54
|
* primops: Remove Monadic and Dyadic categoriesKrzysztof Gogolewski2020-08-268-207/+152
| | | | | | | | | There were four categories of primops: Monadic, Dyadic, Compare, GenPrimOp. The compiler does not treat Monadic and Dyadic in any special way, we can just replace them with GenPrimOp. Compare is still used in isComparisonPrimOp.
* PPC and X86: Portable printing of IEEE floatsPeter Trommler2020-08-264-43/+34
| | | | | | | | | | | | GNU as and the AIX assembler support floating point literals. SPARC seems to have support too but I cannot test on SPARC. Curiously, `doubleToBytes` is also used in the LLVM backend. To avoid endianness issues when cross-compiling float and double literals are printed as C-style floating point values. The assembler then takes care of memory layout and endianness. This was brought up in #18431 by @hsyl20.
* Bignum: fix BigNat subtraction (#18604)Sylvain Henry2020-08-267-19/+31
| | | | | | There was a confusion between the boolean expected by withNewWordArrayTrimedMaybe and the boolean returned by subtracting functions.
* Refactor UnitId pretty-printingSylvain Henry2020-08-2624-185/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we pretty-print a UnitId for the user, we try to map it back to its origin package name, version and component to print "package-version:component" instead of some hash. The UnitId type doesn't carry these information, so we have to look into a UnitState to find them. This is why the Outputable instance of UnitId used `sdocWithDynFlags` in order to access the `unitState` field of DynFlags. This is wrong for several reasons: 1. The DynFlags are accessed when the message is printed, not when it is generated. So we could imagine that the unitState may have changed in-between. Especially if we want to allow unit unloading. 2. We want GHC to support several independent sessions at once, hence several UnitState. The current approach supposes there is a unique UnitState as a UnitId doesn't indicate which UnitState to use. See the Note [Pretty-printing UnitId] in GHC.Unit for the new approach implemented by this patch. One step closer to remove `sdocDynFlags` field from `SDocContext` (#10143). Fix #18124. Also fix some Backpack code to use SDoc instead of String.
* users-guide: Color the logo on the front page of the PDFTakenobu Tani2020-08-261-0/+0
| | | | | | | | | This patch updates the logo with a recent color scheme. This affects only the PDF version of the user's guide. See also: * https://mail.haskell.org/pipermail/ghc-devs/2020-August/019139.html * https://gitlab.haskell.org/ghc/ghc/-/wikis/logo
* linters: Make CPP linter skip image filesTakenobu Tani2020-08-261-0/+3
| | | | | This patch adds an exclusion rule for `docs/users_guide/images`, to avoid lint errors of PDF files.
* Add a test for #18585Krzysztof Gogolewski2020-08-252-0/+49
|
* Use LIdP rather than (XRec p (IdP p))Simon Peyton Jones2020-08-2513-83/+71
| | | | | | | | | | | | | | | This patch mainly just replaces use of XRec p (IdP p) with LIdP p One slightly more significant change is to parameterise HsPatSynDetails over the pass rather than the argument type, so that it's uniform with HsConDeclDetails and HsConPatDetails. I also got rid of the dead code GHC.Hs.type.conDetailsArgs But this is all just minor refactoring. No change in functionality.
* Use tcView, not coreView, in the pure unifier.Richard Eisenberg2020-08-252-3/+24
| | | | Addresses a lingering point within #11715.
* SysTools.Process: Handle exceptions in readCreateProcessWithExitCode'Ben Gamari2020-08-251-3/+18
| | | | | | In #18069 we are observing MVar deadlocks from somewhere in ghc.exe. This use of MVar stood out as being one of the more likely culprits. Here we make sure that it is exception-safe.
* Avoid roundtrip through SDocSylvain Henry2020-08-241-3/+1
| | | | As found by @monoidal on https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3885#note_295126
* Add a test for #18397Krzysztof Gogolewski2020-08-242-0/+24
| | | | The bug was fixed by !3421.
* Perf: make SDoc monad one-shot (#18202)Sylvain Henry2020-08-241-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | With validate-x86_64-linux-deb9-hadrian: T1969 -3.4% (threshold: +/-1%) T3294 -3.3% (threshold: +/-1%) T12707 -1.4% (threshold: +/-1%) Additionally with validate-x86_64-linux-deb9-unreg-hadrian: T4801 -2.4% (threshold: +/-2%) T13035 -1.4% (threshold: +/-1%) T13379 -2.4% (threshold: +/-2%) ManyAlternatives -2.5% (threshold: +/-2%) ManyConstructors -3.0% (threshold: +/-2%) Metric Decrease: T12707 T1969 T3294 ManyAlternatives ManyConstructors T13035 T13379 T4801
* Fix types in silly shifts (#18589)Krzysztof Gogolewski2020-08-243-9/+26
| | | | Patch written by Simon. I have only added a testcase.
* Move pprTyTcApp' inside pprTyTcAppKrzysztof Gogolewski2020-08-231-44/+39
| | | | No semantic change
* Do not print synonyms in :i (->), :i Type (#18594)Krzysztof Gogolewski2020-08-2311-8/+61
| | | | | This adds a new printing flag `sdocPrintTypeAbbreviations` that is used specifically to avoid ghci printing 'type (->) = (->)' and 'type Type = Type'.
* Utils: clarify docs slightlyCraig Ferguson2020-08-221-1/+1
| | | | | The previous comment implies `nTimes n f` is either `f^{n+1}` or `f^{2^n}` (when in fact it's `f^n`).
* Add ubuntu 20.04 jobs for nightly and releaseWander Hillen2020-08-221-1/+30
|
* mkUnique refactoring (#18362)Aditya Gupta2020-08-2237-171/+277
| | | | | Move uniqFromMask from Unique.Supply to Unique. Move the the functions that call mkUnique from Unique to Builtin.Uniques
* gitlab-ci: Test master branch as wellBen Gamari2020-08-211-0/+1
| | | | | | | While these builds are strictly speaking redundant (since every commit is tested by @marge-bot before making it into `master`), they are nevertheless useful as they are displayed in the branch's commit list in GitLab's web interface. Fixes #18595.
* Import qualified Prelude in Cmm/Parser.yVladislav Zavialov2020-08-212-1/+2
| | | | | | | | In preparation for the next version of 'happy', c95920 added a qualified import to GHC/Parser.y but for some reason neglected GHC/Cmm/Parser.y This patch adds the missing qualified import to GHC/Cmm/Parser.y and also adds a clarifying comment to explain why this import is needed.
* Fix -ddump-stg flagSylvain Henry2020-08-216-9/+20
| | | | | | | -ddump-stg was dumping the initial STG (just after Core-to-STG pass) which was misleading because we want the final STG to know if a function allocates or not. Now we have a new flag -ddump-stg-from-core for this and -ddump-stg is deprecated.
* NCG: Dwarf configurationSylvain Henry2020-08-2113-72/+120
| | | | | | * remove references to DynFlags in GHC.CmmToAsm.Dwarf * add specific Dwarf options in NCGConfig instead of directly querying the debug level
* Don't use DynFlags in CmmToAsm.BlockLayout (#17957)Sylvain Henry2020-08-213-22/+28
|
* Put CFG weights into their own module (#17957)Sylvain Henry2020-08-2111-179/+186
| | | | It avoids having to query DynFlags to get them
* Add right-to-left rule for pattern bindingsSimon Peyton Jones2020-08-1914-64/+169
| | | | | | | | | | | | | | | | | | | | | | | Fix #18323 by adding a few lines of code to handle non-recursive pattern bindings. see GHC.Tc.Gen.Bind Note [Special case for non-recursive pattern bindings] Alas, this confused the pattern-match overlap checker; see #18323. Note that this patch only affects pattern bindings like that for (x,y) in this program combine :: (forall a . [a] -> a) -> [forall a. a -> a] -> ((forall a . [a] -> a), [forall a. a -> a]) breaks = let (x,y) = combine head ids in x y True We need ImpredicativeTypes for those [forall a. a->a] types to be valid. And with ImpredicativeTypes the old, unprincipled "allow unification variables to unify with a polytype" story actually works quite well. So this test compiles fine (if delicatedly) with old GHCs; but not with QuickLook unless we add this patch
* Implement -Wredundant-bang-patterns (#17340)nineonine2020-08-199-46/+298
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add new flag '-Wredundant-bang-patterns' that enables checks for "dead" bangs. Dead bangs are the ones that under no circumstances can force a thunk that wasn't already forced. Dead bangs are a form of redundant bangs. The new check is performed in Pattern-Match Coverage Checker along with other checks (namely, redundant and inaccessible RHSs). Given f :: Bool -> Int f True = 1 f !x = 2 we can detect dead bang patterns by checking whether @x ~ ⊥@ is satisfiable where the PmBang appears in 'checkGrdTree'. If not, then clearly the bang is dead. Such a dead bang is then indicated in the annotated pattern-match tree by a 'RedundantSrcBang' wrapping. In 'redundantAndInaccessibles', we collect all dead bangs to warn about. Note that we don't want to warn for a dead bang that appears on a redundant clause. That is because in that case, we recommend to delete the clause wholly, including its leading pattern match. Dead bang patterns are redundant. But there are bang patterns which are redundant that aren't dead, for example f !() = 0 the bang still forces the match variable, before we attempt to match on (). But it is redundant with the forcing done by the () match. We currently don't detect redundant bangs that aren't dead.