| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
This is one way to fix #10246 and #13171. The chosen path involves
adding the invariant that the argument of MachInt/MachWord etc. is
always in the appropriate range, and that the smart constructors for
them (mkMachInt etc.) wrap arguments that are outside the range in the
expected way.
Differential Revision: https://phabricator.haskell.org/D810
|
|
|
|
|
|
| |
for the benefit of GHC API users who want to CSE single expressions.
Differential Revision: https://phabricator.haskell.org/D3069
|
|
|
|
|
|
|
|
|
|
|
|
| |
This flag overrides the inliner heuristics to inline something
independent of cost, size, expected gains or boringness of the context.
It still adheres to arity, simplifier phase control and loop breakers.
This is not exposed via a command line flag and added for the benefit of
GHC API users.
Differential Revision: https://phabricator.haskell.org/D3069
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There ware some old file names (.lhs, ...) at comments.
* mk/config.mk.in
- compiler/hsSyn/HsExpr.lhs -> HsExpr.hs
* utils/ghc-pkg/Main.hs
- compiler/main/Packages.lhs -> Packages.hs
* utils/genapply/Main.hs
- CgRetConv.lhs -> * REMOVE THIS COMMENT (OLDER FILE THAN GHC6) *
- Constants.lhs -> Constants.hs
- compiler/codeGen/CgCallConv.lhs -> compiler/codeGen/StgCmmLayout.hs
- Apply.hc -> Apply.cmm
- HeapStackCheck.hc -> HeapStackCheck.cmm
Reviewers: mpickering, austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3077
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: bgamari, austin
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3065
GHC Trac Issues: #12957
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old version had O(n^3) performance for n non-overlapping source
notes and let floats each, which is exactly what happens with -g if we
compile a list literal of length n.
The idea here is simply to establish early which source notes will
actually survive (e.g. use a left fold). The new code should be O(n) for
list literals.
Reviewers: austin, dfeuer, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3037
GHC Trac Issues: #11095
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 266a9dc4c changed = to := in one place in mk/config.mk.in.
This broke SupportsSplitSections because the variable LdIsGNULd
that it depends on is not defined until later in the file.
Test Plan: pushed to a wip/ branch for perf to build
Reviewers: DemiMarie, austin, bgamari, mpickering
Reviewed By: mpickering
Subscribers: mpickering, thomie
Differential Revision: https://phabricator.haskell.org/D3070
GHC Trac Issues: #13230
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[skip ci]
There are some old file names (*.lhs) at comments.
(I'm fixing to read source code by newcomers.)
* libraries/base/GHC/Base.hs
- compiler/deSugar/DsListComp.lhs
- PrelRules.lhs x2
- Base.lhs
* libraries/base/GHC/IO.hs
- PrimOp.lhs
- GHC.IO.lhs
- GHC.Exception.lhs
* libraries/base/GHC/Real.hs
- compiler/prelude/PrelRules.lhs
* libraries/ghc-prim/GHC/Magic.hs
- MkId.lhs x2
Reviewers: austin, hvr, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3060
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[skip ci]
There ware some old file names (.lhs, ...) at comments.
* compiler/ghc.mk
- prelude/PrimOp.lhs -> prelude/PrimOp.hs
* compiler/parser/cutils.h
- PrimPacked.lhs -> compiler/utils/FastString.hs
Reviewers: bgamari, austin
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3076
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[skip ci]
There ware some old file names (.lhs, ...) at comments.
* rts/win32/ThrIOManager.c
- Conc.lhs -> Conc.hs
* rts/PrimOps.cmm
- ByteCodeLink.lhs -> ByteCodeLink.hs
- StgMiscClosures.hc -> StgMiscClosures.cmm
* rts/AutoApply.h
- AutoApply.hc -> AutoApply.cmm
* rts/HeapStackCheck.cmm
- PrimOps.hc -> PrimOps.cmm
* rts/LdvProfile.h
- Updates.hc -> Updates.cmm
* rts/Schedule.c
- StgStartup.hc -> StgStartup.cmm
* rts/Weak.c
- StgMiscClosures.hc -> StgMiscClosures.cmm
Reviewers: bgamari, austin, erikd, simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3075
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[skip ci]
There ware some old file names (.lhs, ...) at comments.
* includes/rts/Bytecodes.h
- ghc/compiler/ghci/ByteCodeGen.lhs -> ByteCodeAsm.hs
* includes/rts/Constants.h
- libraries/base/GHC/Conc.lhs -> libraries/base/GHC/Conc/Sync.hs
* includes/rts/storage/FunTypes.h
- utils/genapply/GenApply.hs -> utils/genappl/Main.hs
- compiler/codeGen/CgCallConv.lhs -> compiler/codeGen/StgCmmLayout.hs
* includes/stg/MiscClosures.h
- compiler/codeGen/CgStackery.lhs -> compiler/codeGen/StgCmmArgRep.hs
- HeapStackCheck.hc -> HeapStackCheck.cmm
Reviewers: bgamari, austin, simonmar, erikd
Reviewed By: erikd
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3074
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use `noDuplicate#` to prevent lazy `ST` thunks from
being evaluated in multiple GHC threads.
Some lazy `ST` functions added laziness that did not seem to be useful
(e.g.,
creating lazy pairs that will never be matched unless one of their
components
is demanded). Stripped that out.
Reviewers: ekmett, simonpj, bgamari, simonmar, austin, hvr
Subscribers: rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D3038
GHC Trac Issues: #11760
|
|
|
|
|
|
| |
An ASSERT failure in rewritableTyVars made me realise
that there was an outright bug in shouldSplitWD. See
the long Note [Splitting WD constraints].
|
|
|
|
|
|
| |
according to the graph at perf.haskell.org, it has regressed due to join
points, which moved it very very close to the +10% mark and hence made it
fail just sometimes.
|
|
|
|
|
|
|
| |
This fixes #13227. It remains to be seen what the performance impacts
are. Pushing as a branch to get perf.haskell.org answer that for us.
Differential Revision: https://phabricator.haskell.org/D3067
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch converts the 4 lasting static flags (read from the command
line and unsafely stored in immutable global variables) into dynamic
flags. Most use cases have been converted into reading them from a DynFlags.
In cases for which we don't have easy access to a DynFlags, we read from
'unsafeGlobalDynFlags' that is set at the beginning of each 'runGhc'.
It's not perfect (not thread-safe) but it is still better as we can
set/unset these 4 flags before each run when using GHC API.
Updates haddock submodule.
Rebased and finished by: bgamari
Test Plan: validate
Reviewers: goldfire, erikd, hvr, austin, simonmar, bgamari
Reviewed By: simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2839
GHC Trac Issues: #8440
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Empty case expressions have strict semantics so the problem boils down
to inhabitation checking for the type of the scrutinee. 3 main functions
added:
- pmTopNormaliseType_maybe for the normalisation of the scrutinee type
- inhabitationCandidates for generating the possible patterns of the
appropriate type
- checkEmptyCase' to filter out the candidates that give rise to
unsatisfiable constraints.
See Note [Checking EmptyCase Expressions] in Check
and Note [Type normalisation for EmptyCase] in FamInstEnv
Test Plan: validate
Reviewers: simonpj, goldfire, dfeuer, austin, bgamari
Reviewed By: bgamari
Subscribers: mpickering, thomie
Differential Revision: https://phabricator.haskell.org/D2105
GHC Trac Issues: #10746
|
|
|
|
| |
where an expected float-out is not happening.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Here we add support to GHCi for StaticPointers. This process begins by
adding remote GHCi messages for adding entries to the static pointer
table. We then collect binders needing SPT entries after linking and
send the interpreter a message adding entries with the appropriate
fingerprints.
Test Plan: `make test TEST=StaticPtr`
Reviewers: facundominguez, mboes, simonpj, simonmar, goldfire, austin,
hvr, erikd
Reviewed By: simonpj, simonmar
Subscribers: RyanGlScott, simonpj, thomie
Differential Revision: https://phabricator.haskell.org/D2504
GHC Trac Issues: #12356
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this additional laziness we will loop forever trying
to find the definitions of the conlikes referenced in the pragma.
Fixes #13188
Reviewers: austin, RyanGlScott, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3058
GHC Trac Issues: #13188
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: dfeuer, austin, hvr, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3024
GHC Trac Issues: #13181
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a regression due to D2605 (see #8472) wherein top-level primitive
strings would fail to be noticed by CoreToStg as they were wrapped in a
tick. This resulted in a panic in CoreToStg due to inconsistent CAF information
(or a Core Lint failure, if enabled). Here we document the invariant that
unlifted expressions can only sit at top-level if of the form `Lit (MachStr
...)` with no ticks or other embellishments. Moreover, we fix instance of
this in `Simplify.prepareRhs` and `FloatOut.wrapTick` where this
invariant was being broken.
Test Plan: Validate with `-g`. Run testsuite with `WAY=ghci`.
Reviewers: austin, simonpj
Reviewed By: simonpj
Subscribers: simonpj, akio, scpmw, thomie
Differential Revision: https://phabricator.haskell.org/D3051
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test Plan: Validate
Reviewers: RyanGlScott, austin, hvr
Reviewed By: RyanGlScott
Subscribers: goldfire, RyanGlScott, thomie
Differential Revision: https://phabricator.haskell.org/D3059
|
|
|
|
|
| |
In the note it is explained why it's fine to discard a can_fail primop,
but the table erroneously says it's not fine.
|
|
|
|
| |
This has been failing on Darwin since 748b79741652028827b6225c36b8ab55d22bdeb0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This major patch implements Join Points, as described in
https://ghc.haskell.org/trac/ghc/wiki/SequentCore. You have
to read that page, and especially the paper it links to, to
understand what's going on; but it is very cool.
It's Luke Maurer's work, but done in close collaboration with Simon PJ.
This Phab is a squash-merge of wip/join-points branch of
http://github.com/lukemaurer/ghc. There are many, many interdependent
changes.
Reviewers: goldfire, mpickering, bgamari, simonmar, dfeuer, austin
Subscribers: simonpj, dfeuer, mpickering, Mikolaj, thomie
Differential Revision: https://phabricator.haskell.org/D2853
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
`.gitignore` contains a very broad ignore entry for `foo*`.
This has bitten us before and should probably be removed.
Reviewers: bgamari, austin
Subscribers: simonpj, thomie
Differential Revision: https://phabricator.haskell.org/D3054
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: make accept new test output
Test Plan: make test TEST="T11223_link_order_a_b_2_fail T11223_simple_duplicate_lib"
Reviewers: austin, bgamari, simonmar
Reviewed By: simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3053
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's generally a pretty useful thing to have around.
[skip ci]
Test Plan: Build it
Reviewers: austin, dfeuer
Reviewed By: dfeuer
Subscribers: dfeuer, thomie
Differential Revision: https://phabricator.haskell.org/D3048
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are some incorrect links and file names in GHC user's guide.
* docs/users_guide/glasgow_exts.rst
- GHC/Base.lhs
- GHC/List.lhs
* docs/users_guide/ffi-chap.rst
- :base-ref:`Foreign`
- :base-ref:`Control.Concurrent`
I fixed them.
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3035
GHC Trac Issues: #13198
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently eventlog data is always written to a file `progname.eventlog`.
This patch introduces the `flushEventLog` field in `RtsConfig` which
allows to customize the writing of eventlog data.
One possible scenario is the ongoing live-profile-monitor effort by
@NCrashed which slurps all eventlog data through `fluchEventLog`.
`flushEventLog` takes a buffer with eventlog data and its size and
returns `false` (0) in case eventlog data could not be procesed.
Reviewers: simonmar, austin, erikd, bgamari
Reviewed By: simonmar, bgamari
Subscribers: qnikst, thomie, NCrashed
Differential Revision: https://phabricator.haskell.org/D2934
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I believe this is actually a completely valid thing to do, despite the
arguments put forth in #10052. All that was missing was logic in
SetLevels to correctly substitute the cloned binders into the
breakpoint's free variable list.
This is a prerequisite for enabling StaticPointer support in the
interpreter.
Test Plan: Validate
Reviewers: austin, scpmw
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3049
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As described in the note, floating `reallyUnsafePtrEquality#`
out can make it much less precise. Marking it `can_fail` will
prevent it from floating out, which I believe is particularly
important in light of 5a9a1738023aeb742e537fb4a59c4aa8fecc1f8a,
and should also help prevent let/app invariant failures as seen
in #11444 and #13027.
Reviewers: simonpj, austin, bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2987
GHC Trac Issues: #13027, #11444
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduces a new flag `-fsolve-constant-dicts` which makes the
constraint solver solve super class constraints with available dictionaries if
possible. The flag is enabled by `-O1`.
The motivation of this patch is that the compiler can produce more efficient
code if the constraint solver used top-level instance declarations to solve
constraints that are currently solved givens and their superclasses. In
particular, as it currently stands, the compiler imposes a performance penalty
on the common use-case where superclasses are bundled together for user
convenience. The performance penalty applies to constraint synonyms as
well. This example illustrates the issue:
```
{-# LANGUAGE ConstraintKinds, MultiParamTypeClasses, FlexibleContexts #-}
module B where
class M a b where m :: a -> b
type C a b = (Num a, M a b)
f :: C Int b => b -> Int -> Int
f _ x = x + 1
```
Output without the patch, notice that we get the instance for `Num Int` by
using the class selector `p1`.
```
f :: forall b_arz. C Int b_arz => b_arz -> Int -> Int
f =
\ (@ b_a1EB) ($d(%,%)_a1EC :: C Int b_a1EB) _ (eta1_B1 :: Int) ->
+ @ Int
(GHC.Classes.$p1(%,%) @ (Num Int) @ (M Int b_a1EB) $d(%,%)_a1EC)
eta1_B1
B.f1
```
Output with the patch, nicely optimised code!
```
f :: forall b. C Int b => b -> Int -> Int
f =
\ (@ b) _ _ (x_azg :: Int) ->
case x_azg of { GHC.Types.I# x1_a1DP ->
GHC.Types.I# (GHC.Prim.+# x1_a1DP 1#)
}
```
Reviewers: simonpj, bgamari, austin
Reviewed By: simonpj
Subscribers: mpickering, rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D2714
GHC Trac Issues: #12791, #5835
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Found while revisiting the binary serialization for interface files.
Test Plan: Building and validating currently
Reviewers: austin, bgamari, mpickering
Reviewed By: mpickering
Subscribers: mpickering, thomie
Differential Revision: https://phabricator.haskell.org/D3050
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The submodule repository contains the latest version of the GMP source
distribution (6.1.2) with the doc/ subdirectory removed, as described
in gmp/ghc.mk. Rather than applying the old patch from gmp/tarball/patch
I moved its contents into gmp/gmpsrc.patch, canceling a patch related to
memory management there. Experimentally, the PIC-related patch for OS X
is still necessary.
The upgrade to GMP 6.1.2 fixes #7655.
Test Plan:
Built on OS X with in-tree gmp and tested that the command
`ghc -e 'length (show (2^(5*10^6) :: Integer))'` no longer segfaults.
Reviewers: mpickering, hvr, austin, bgamari
Reviewed By: bgamari
Subscribers: mpickering, thomie
Differential Revision: https://phabricator.haskell.org/D3044
GHC Trac Issues: #7655
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3040
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MAKEHELP.md has an old link to 'Building/Hacking'. I updated it to
suitable links for new contributors.
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3039
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These two special cases were created in D2278 by mechanically
inlining negateInteger into plusInteger. They aren't needed
(the `minusInteger (S# x#) (S# y#)` case already handles all values
correctly), and they can never help by avoiding an allocation,
unlike the original special case in plusInteger, since we still
have to allocate the result.
Removing these special cases will save a couple comparisons and
conditional branches in the common case of subtracting two small
Integers.
Test Plan:
Existing test `plusMinusInteger` already tests
the values in question.
Reviewers: bgamari, goldfire, austin, hvr
Reviewed By: bgamari, hvr
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3034
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3032
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The symbol not found error that is triggered
during lazy-loading was a bit chaotic before.
This reformats it a bit to:
```
ghc-stage2.exe: | E:\...\libLLVMSupport.a: unknown symbol `_ZN4llvm5APIntC1Ejyb'
ghc-stage2.exe: | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm5APInt14AssignSlowCaseERKS0_'
ghc-stage2.exe: | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm13ConstantRangeC1ENS_5APIntES1_'
ghc-stage2.exe: | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm14FoldingSetImplC2Ej'
ghc-stage2.exe: | E:\...\libLLVMCore.a: unknown symbol `_ZN4llvm15LLVMContextImplD1Ev'
ghc-stage2.exe: | E:\...\libLLVMLTO.a: unknown symbol `_ZN4llvm11LLVMContextD1Ev'
ghc-stage2.exe: | E:\...\libLLVMCore.a: unknown symbol `_ZNK4llvm5Value10getContextEv'
ghc-stage2.exe: ^^ Could not load 'LLVMIsMultithreaded', dependency unresolved.
See top entry above.
```
I have also thought about also showing the demangled names, as it may
be useful for the end user.
`libgcc` seems to provide a method for this so we wouldn't need any
extra dependency.
Any thoughts on this or would it not be useful?
Reviewers: austin, erikd, simonmar, bgamari
Reviewed By: bgamari
Subscribers: RyanGlScott, thomie, #ghc_windows_task_force
Differential Revision: https://phabricator.haskell.org/D3027
GHC Trac Issues: #13093, #13113
|