summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* API Annotations: Keep track of unicode for linear arrow notationwip/az/unicode-hsscaledAlan Zimmerman2020-10-2020-76/+107
| | | | | | | | | | | The linear arrow can be parsed as `%1 ->` or a direct single token unicode equivalent. Make sure that this distinction is captured in the parsed AST by using IsUnicodeSyntax where it appears, and introduce a new API Annotation, AnnMult to represent its location when unicode is not used. Updated haddock submodule
* gitlab-ci: Rename FLAVOUR -> BUILD_FLAVOURBen Gamari2020-10-202-8/+7
| | | | | | | Previously the Hadrian jobs used the `FLAVOUR` environment variable to communicate which flavour `ci.sh` should build whereas `make` used `BUILD_FLAVOUR`. This caused unnecessary confusion. Consolidate these two.
* Compile modules with `-fobject-code` enabled to byte-code when loaded with ↵nineonine2020-10-205-6/+49
| | | | | | | | | | | | | | | `*` prefix in ghci (#8042) The documentation states that when using :add and :load, the `*` prefix forces a module to be loaded as byte-code. However, this seems to be ignored when -fobject-code has been enabled. In that case, the compiled code is always used, regardless of whether the *-form is used. The idea is to consult the Targets in HscEnv and check the 'targetAllowObjCode' flag. If the flag for given module is set, then patch up DynFlags and select compilation backend accordingly. This would require a linear scan of course, but that shouldn't be too costly.
* Minor comments, update linear types docsKrzysztof Gogolewski2020-10-205-12/+22
| | | | | | | - Update comments: placeHolderTypeTc no longer exists "another level check problem" was a temporary comment from linear types - Use Mult type synonym (reported in #18676) - Mention multiplicity-polymorphic fields in linear types docs
* testsuite: Add test for #18346Ben Gamari2020-10-203-0/+43
| | | | This was fixed by 4291bddaea3148908c55f235ee8978e1d9aa6f20.
* Remove pdocPrecSylvain Henry2020-10-192-18/+17
| | | | | | pdocPrec was only used in GHC.Cmm.DebugBlock.pprUnwindExpr, so remove it. OutputableP becomes a one-function class which might be better for performance.
* Implement -Woperator-whitespace (#18834)Vladislav Zavialov2020-10-1918-41/+213
| | | | | | | | | | | | | | This patch implements two related warnings: -Woperator-whitespace-ext-conflict warns on uses of infix operators that would be parsed differently were a particular GHC extension enabled -Woperator-whitespace warns on prefix, suffix, and tight infix uses of infix operators Updates submodules: haddock, containers.
* Linting correctionsHécate2020-10-171-1/+1
| | | | | * Bring back LANGUAGE pragmas in GHC.IO.Handle.Lock.Windows * Exclude some modules that are wrongfully reported
* Don't get host RTS ways via settings (#18651)Sylvain Henry2020-10-177-32/+5
| | | | | | | | | | | | To correctly perform a linking hack for Windows we need to link with the RTS GHC is currently using. We used to query the RTS ways via the "settings" file but it is fragile (#18651). The hack hasn't been fixed to take into account all the ways (Tracing) and it makes linking of GHC with another RTS more difficult (we need to link with another RTS and to regenerate the settings file). So this patch uses the ways reported by the RTS itself (GHC.Platform.Ways.hostWays) instead of the "settings" file.
* Apply suggestion to testsuite/tests/ffi/should_run/all.TDylanZA2020-10-171-1/+6
|
* When using rts_setInCallCapability, lock incall threadsDylan Yudaken2020-10-177-8/+145
| | | | | | | | This diff makes sure that incall threads, when using `rts_setInCallCapability`, will be created as locked. If the thread is not locked, the thread might end up being scheduled to a different capability. While this is mentioned in the docs for `rts_setInCallCapability,`, it makes the method significantly less useful as there is no guarantees on the capability being used. This commit also adds a test to make sure things stay on the correct capability.
* Testsuite: Add dead arity analysis testsSebastian Graf2020-10-1755-2537/+809
| | | | | We didn't seem to test these old tests at all, judging from their expected output.
* Arity: Record arity types for non-recursive letsSebastian Graf2020-10-175-63/+214
| | | | | | | | | | | | | | | | | | | | | | | In #18793, we saw a compelling example which requires us to look at non-recursive let-bindings during arity analysis and unleash their arity types at use sites. After the refactoring in the previous patch, the needed change is quite simple and very local to `arityType`'s defn for non-recurisve `Let`. Apart from that, we had to get rid of the second item of `Note [Dealing with bottoms]`, which was entirely a safety measure and hindered optimistic fixed-point iteration. Fixes #18793. The following metric increases are all caused by this commit and a result of the fact that we just do more work now: Metric Increase: T3294 T12545 T12707
* Arity: Refactor fixed-point iteration in GHC.Core.Opt.AritySebastian Graf2020-10-172-70/+99
| | | | | | | | | | | | | | | Arity analysis used to propagate optimistic arity types during fixed-point interation through the `ArityEnv`'s `ae_cheap_fun` field, which is like `GHC.Core.Utils.exprIsCheap`, but also considers the current iteration's optimistic arity, for the binder in question only. In #18793, we have seen that this is a problematic design, because it doesn't allow us to look through PAP bindings of that binder. Hence this patch refactors to a more traditional form with an explicit signature environment, in which we record the optimistic `ArityType` of the binder in question (and at the moment is the *only* binder that is recorded in the arity environment).
* Skip type family defaults with hs-boot and hsig filesJohn Ericson2020-10-1717-5/+269
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Works around #17190, possible resolution for #17224. New design is is according to accepted [GHC Propoal 320]. Instances in signatures currently unconditionally opt into associated family defaults if no explicit instance is given. This is bad for two reasons: 1. It constrains possible instantiations to use the default, rather than possibly define the associated family differently. 2. It breaks compilation as type families are unsupported in signatures. This PR simply turns off the filling in of defaults in those cases. Additionally, it squelches a missing definition warning for hs-boot too that was only squelched for hsig before. The downsides are: 1. There is no way to opt into the default, other than copying its definition. 2. If we fixed type classes in signatures, and wanted instances to have to explicitly *out of* rather than into the default, that would now be a breaking change. The change that is most unambiguously goood is harmonizing the warning squelching between hs-boot or hsig. Maybe they should have the warning (opt out of default) maybe they shouldn't (opt in to default), but surely it should be the same for both. Add hs-boot version of a backpack test regarding class-specified defaults in instances that appear in an hs-boot file. The metrics increase is very slight and makes no sense --- at least no one has figured anything out after this languishing for a while, so I'm just going to accept it. Metric Increase: T10421a [GHC proposal 320]: https://github.com/ghc-proposals/ghc-proposals/pull/320
* gitlab-ci: s/allow_newer/allow_failureBen Gamari2020-10-171-1/+1
| | | Silly mistake on my part.
* gitlab-ci: Allow doc-tarball job to failBen Gamari2020-10-171-0/+2
| | | | Currently the Hadrian build appears not to package documentation correctly, causing doc-tarball to fail due to the Windows build.
* Clarify Eq documentation #18713f-a2020-10-161-9/+4
|
* gitlab-ci: Fix Hadrian bindist namesBen Gamari2020-10-162-7/+14
|
* gitlab-ci: Remove allow_failure from Windows jobsBen Gamari2020-10-161-6/+0
|
* rts: Add __mingw_vfprintf to RtsSymbols.cBen Gamari2020-10-161-1/+3
| | | | | Following the model of the other printf symbols. See Note [Symbols for MinGW's printf].
* testsuite: Account for -Wnoncanonical-monoid-instances changes on WindowsBen Gamari2020-10-163-9/+0
|
* testsuite: Sort metrics by metric typeBen Gamari2020-10-161-1/+15
| | | | Closes #18838.
* base: Reintroduce necessary LANGUAGE pragmasBen Gamari2020-10-161-0/+2
| | | | These were incorrectly removed in a recent cleanup commit.
* mingw: Extract zst toolchain archivesBen Gamari2020-10-162-3/+4
| | | | This should have been done when the toolchain was bumped.
* compiler/ByteCode: Allow 2^32 local labelsBen Gamari2020-10-153-4/+7
| | | | | | This widens LocalLabel to 2^16, avoiding the crash observed in #14334. Closes #14334.
* compiler/ByteCode: Make LocalLabel a newtypeBen Gamari2020-10-153-12/+17
|
* compiler/ByteCode: Use strict Maps in bytecode assemblerBen Gamari2020-10-151-2/+2
|
* rts: Clean-up whitespace in InterpreterBen Gamari2020-10-151-10/+10
|
* Extend mAX_TUPLE_SIZE to 64GHC GitLab CI2020-10-1510-107/+58
| | | | As well a ctuples and sums.
* Add flags for annotating Generic{,1} methods INLINE[1] (#11068)Andrzej Rybczak2020-10-1515-21/+1114
| | | | | | | | Makes it possible for GHC to optimize away intermediate Generic representation for more types. Metric Increase: T12227
* testsuite: Add missing #include on <stdlib.h>Ben Gamari2020-10-151-0/+1
| | | | This otherwise fails on newer Clangs, which warn more aggressively on undeclared symbols.
* Fix parsing of PIE flagsSylvain Henry2020-10-151-2/+2
| | | | | | -fPIE and -fno-PIE flags were (un)setting Opt_PIC instead of Opt_PIE. Original commit: 3625728a0e3a9b56c2b85ae7ea8bcabdd83ece6a
* Remove Proxy# argument in Data.Typeable.InternalKrzysztof Gogolewski2020-10-155-13/+11
| | | | | | No longer neccessary - TypeRep is now indexed, there is no ambiguity. Also fix a comment in Evidence.hs, IsLabel no longer takes a Proxy#.
* users-guide: Add missing :ghc-flag: directiveBen Gamari2020-10-141-2/+2
|
* Fix some missed opportunities for preInlineUnconditionallySimon Peyton Jones2020-10-1433-443/+436
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two signficant changes here: * Ticket #18815 showed that we were missing some opportunities for preInlineUnconditionally. The one-line fix is in the code for GHC.Core.Opt.Simplify.Utils.preInlineUnconditionally, which now switches off only for INLINE pragmas. I expanded Note [Stable unfoldings and preInlineUnconditionally] to explain. * When doing this I discovered a way in which preInlineUnconditionally was occasionally /too/ eager. It's all explained in Note [Occurrences in stable unfoldings] in GHC.Core.Opt.OccurAnal, and the one-line change adding markAllMany to occAnalUnfolding. I also got confused about what NoUserInline meant, so I've renamed it to NoUserInlinePrag, and changed its pretty-printing slightly. That led to soem error messate wibbling, and touches quite a few files, but there is no change in functionality. I did a nofib run. As expected, no significant changes. Program Size Allocs ---------------------------------------- sphere -0.0% -0.4% ---------------------------------------- Min -0.0% -0.4% Max -0.0% +0.0% Geometric Mean -0.0% -0.0% I'm allowing a max-residency increase for T10370, which seems very irreproducible. (See comments on !4241.) There is always sampling error for max-residency measurements; and in any case the change shows up on some platforms but not others. Metric Increase: T10370
* Add -Wnoncanonical-{monad,monoid}-instances to standardWarningsFumiaki Kinoshita2020-10-1432-100/+77
| | | | | | | | | ------------------------- Metric Decrease: T12425 Metric Increase: T17516 -------------------------
* Fix PostfixOperators (#18151)Vladislav Zavialov2020-10-144-1/+33
| | | | | This fixes a regression introduced in 2b89ca5b850b4097447cc4908cbb0631011ce979 See the new T18151x test case.
* Remove "Operator sections" from docs/users_guide/bugs.rstVladislav Zavialov2020-10-141-25/+0
| | | | | The issue described in that section was fixed by 2b89ca5b850b4097447cc4908cbb0631011ce979
* Make DataKinds the sole arbiter of kind-level literals (and friends)Ryan Scott2020-10-146-36/+54
| | | | | | | | | | | | | | | | | | | | | | | Previously, the use of kind-level literals, promoted tuples, and promoted lists required enabling both `DataKinds` and `PolyKinds`. This made sense back in a `TypeInType` world, but not so much now that `TypeInType`'s role has been superseded. Nowadays, `PolyKinds` only controls kind polymorphism, so let's make `DataKinds` the thing that controls the other aspects of `TypeInType`, which include literals, promoted tuples and promoted lists. There are some other things that overzealously required `PolyKinds`, which this patch fixes as well: * Previously, using constraints in kinds (e.g., `data T :: () -> Type`) required `PolyKinds`, despite the fact that this is orthogonal to kind polymorphism. This now requires `DataKinds` instead. * Previously, using kind annotations in kinds (e.g., `data T :: (Type :: Type) -> Type`) required both `KindSignatures` and `PolyKinds`. This doesn't make much sense, so it only requires `KindSignatures` now. Fixes #18831.
* Bump LLVM version to 10.0Ben Gamari2020-10-142-1/+4
| | | | Fixes #18267.
* gitlab-ci: Verify that Hadrian builds with StackBen Gamari2020-10-143-3/+20
| | | | | | | | As noted in #18726, this regularly breaks. Let's test it. Note that we don't actually perform a build of GHC itself; we merely test that the Hadrian executable builds and works (by invoking `hadrian --version`).
* Unification of Nat and NaturalsHaskellMouse2020-10-1329-78/+129
| | | | | | | | | | | | | | | | | | | | | | | This commit removes the separate kind 'Nat' and enables promotion of type 'Natural' for using as type literal. It partially solves #10776 Now the following code will be successfully typechecked: data C = MkC Natural type CC = MkC 1 Before this change we had to create the separate type for promotion data C = MkC Natural data CP = MkCP Nat type CC = MkCP 1 But CP is uninhabited in terms. For backward compatibility type synonym `Nat` has been made: type Nat = Natural The user's documentation and tests have been updated. The haddock submodule also have been updated.
* Parser: don't require the HomeUnitIdSylvain Henry2020-10-137-97/+114
| | | | | | | The HomeUnitId is only used by the Cmm parser and this one has access to the DynFlags, so it can grab the UnitId of the HomeUnit from them. Bump haddock submodule
* Initial ShortText code and conversion of package db codeWander Hillen2020-10-1313-95/+255
| | | | | | | | | | | | | | | | | | | | | | | | | Metric Decrease: Naperian T10421 T10421a T10547 T12150 T12234 T12425 T13035 T18140 T18304 T5837 T6048 T13253-spj T18282 T18223 T3064 T9961 Metric Increase T13701 HFSKJH
* DynFlags: refactor DmdAnalSylvain Henry2020-10-122-52/+57
| | | | Make demand analysis usable without having to provide DynFlags.
* Fall back to types when looking up data constructors (#18740)wip/ghc-18740-lookup-updateDaniel Rogozin2020-10-1119-21/+190
| | | | | | | | | | | | | | | | | | | | Before this patch, referring to a data constructor in a term-level context led to a scoping error: ghci> id Int <interactive>:1:4: error: Data constructor not in scope: Int After this patch, the renamer falls back to the type namespace and successfully finds the Int. It is then rejected in the type checker with a more useful error message: <interactive>:1:4: error: • Illegal term-level use of the type constructor ‘Int’ imported from ‘Prelude’ (and originally defined in ‘GHC.Types’) • In the first argument of ‘id’, namely ‘Int’ In the expression: id Int We also do this for type variables.
* Remove the dependency on the ghc-linters stageHécate2020-10-111-2/+2
|
* Bignum: fix bigNatCompareWord# bug (#18813)Sylvain Henry2020-10-104-1/+28
|
* Linear types: fix quantification in GADTs (#18790)Krzysztof Gogolewski2020-10-103-9/+30
|