| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Authored-by: Stephen Blackheath <...@blacksapphire.com>
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have primops for copying ranges of bytes between ByteArray#s:
* ByteArray# -> MutableByteArray#
* MutableByteArray# -> MutableByteArray#
This extends it with three further cases:
* Addr# -> MutableByteArray#
* ByteArray# -> Addr#
* MutableByteArray# -> Addr#
One use case for these is copying between ForeignPtr-based
representations and in-heap arrays (like Text, UArray etc).
The implementation is essentially the same as for the existing
primops, and shares the memcpy stuff in the code generators.
Defficiencies / future directions: none of these primops (existing
or the new ones) let one take advantage of knowing that ByteArray#s
are word-aligned in memory. Though it is unclear that any of the
code generators would make use of this information unless the size
to copy is also known at compile time.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
|
| |
Our special ghc-cabal command needs to be told that we are building with
dynamic library support when it does its copying. We do so by passing an
extra parameter from ghc.mk.
|
| | |
|
| | |
|
| |
|
|
| |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
|
| |
This fixes #8289.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
|
| |
It is not added to the section on Special built-in functions because
the (from a user POV related) unsafeCoerce has been removed there
recently.
|
| |
|
|
|
| |
This completes the change from [7ea49661c]: GHC.Exts lives in base, not
in ghc-prim.
|
| |
|
|
| |
for easier copy'n'paste. This fixes: #3647
|
| |
|
|
| |
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
|
| |
|
|
| |
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
|
| |
|
|
| |
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
|
| |
|
|
| |
To push what was validated, not just what was commited.
|
| |
|
|
|
|
|
|
|
|
|
| |
This is the result of the design at
http://ghc.haskell.org/trac/ghc/wiki/NewtypeWrappers
The goal is to be able to convert between, say [First Int] and [Last
Int] with zero run-time overhead. To that end, we introduce a special
two parameter type class Coercible whose instances are created
automatically and on-the fly. This relies on and exploits the recent
addition of roles to core.
|
| |
|
|
| |
and add related function tyConsOfTyCon.
|
| | |
|
| |
|
|
| |
in preparation for the Coercible class implementation.
|
| |
|
|
| |
In preparation for the primitive class Coercible
|
| |
|
|
|
|
| |
Implemented in [e17549c80425f3c8a8a672c65bbff00290839f3c/base]
Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
|
| |
|
|
|
| |
The new commits inlcude AMP-warning fixes and support
for the new `instance Data Data.Version` provided by `base`
|
| | |
|
| |
|
|
|
|
|
| |
The `Data` definitions were moved from `Data.Generics` to
`Data.Data` via [5a9e76d24776608a3e14ba94f1dfa0cac072c251/base]
Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
|
| |
|
|
| |
This makes it consistent with the corresponding -cmm-sink flag
|
| |
|
|
|
|
|
|
|
|
| |
When Ryan merged in the atomics branch, he made atomic_inc and
atomic_dec EXTERN_INLINE functions, meaning their definitions
became part of object files in the non-threaded build, instead of being
inlined. As a result, this broke the linker for static GHCi, since it
couldn't properly resolve the now-externally defined functions.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch implements some simple evaluation of type-level expressions
featuring natural numbers. We can evaluate *concrete* expressions that
use the built-in type families (+), (*), (^), and (<=?), declared in
GHC.TypeLits. We can also do some type inference involving these
functions. For example, if we encounter a constraint such as `(2 + x) ~ 5`
we can infer that `x` must be 3. Note, however, this is used only to
resolve unification variables (i.e., as a form of a constraint improvement)
and not to generate new facts. This is similar to how functional
dependencies work in GHC.
The patch adds a new form of coercion, `AxiomRuleCo`, which makes use
of a new form of axiom called `CoAxiomRule`. This is the form of evidence
generate when we solve a constraint, such as `(1 + 2) ~ 3`.
The patch also adds support for built-in type-families, by adding a new
form of TyCon rhs: `BuiltInSynFamTyCon`. such built-in type-family
constructors contain a record with functions that are used by the
constraint solver to simplify and improve constraints involving the
built-in function (see `TcInteract`). The record in defined in `FamInst`.
The type constructors and rules for evaluating the type-level functions
are in a new module called `TcTypeNats`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit does two things:
* Allows duplicating of global registers and literals by inlining
them. Previously we would only inline global register or literal
if it was used only once.
* Changes method of determining conflicts between a node and an
assignment. New method has two advantages. It relies on
DefinerOfRegs and UserOfRegs typeclasses, so if a set of registers
defined or used by a node should ever change, `conflicts` function
will use the changed definition. This definition also catches
more cases than the previous one (namely CmmCall and CmmForeignCall)
which is a step towards making it possible to run sinking pass
before stack layout (currently this doesn't work).
This patch also adds a lot of comments that are result of about two-week
long investigation of how sinking pass works and why it does what it does.
|
| |
|
|
| |
And remove some trailing whitespaces from that file.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch implements a warning when definitions conflict with the
Applicative-Monad Proposal (AMP), described in #8004. Namely, this will
cause a warning iff:
* You have an instance of Monad, but not Applicative
* You have an instance of MonadPlus, but not Alternative
* You locally defined a function named join, <*>, or pure.
In GHC 7.10, these warnings will actually be enforced with superclass
constraints through changes in base, so programs will fail to compile
then.
This warning is enabled by default. Unfortunately, not all of
our upstream libraries have accepted the appropriate patches. So we
temporarily fix ./validate by ignoring the AMP warning.
Dan Rosén made an initial implementation of this change, and the
remaining work was finished off by David Luposchainsky. I finally made
some minor refactorings.
Authored-by: Dan Rosén <danr@chalmers.se>
Authored-by: David Luposchainsky <dluposchainsky@gmail.com>
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
| |
Authored-by: David Luposchainsky <dluposchainsky@gmail.com>
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
On some architectures it might happen that stack layout pass will
invalidate the list of calculated procpoints by dropping some of
them. We fix this by checking whether a proc-point is in a graph
at the beginning of proc-point analysis. This is a speculative
fix for #8205.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit addresses #8051 by fixing
- Incorrect column indices reported in error messages for
single-line and multi-line input,
- incorrect line numbers reported in error messages for
expressions entered in multi-line input, and
- inhibiting the confusing interaction between `:{` and `:set +m`
causing the triggering of implicit multi-line continuation
mode right after `:}` terminates the multi-line entry block.
|
| |
|
|
| |
This is related to #8121
|
| |
|
|
|
|
|
|
|
|
|
| |
'tcRnModuleTcRnM' builds the TcRnM monad computation that is the bulk of
'tcRnModule'
This commit makes it simpler for courageous Core plugins to invoke the
typechecker. In particular, they no longer need to copy-and-paste what is now
the body of 'tcRnModuleTcRnM'. The key change is that the 'tcRnModuleTcRnM'
computation can be run with (a hypothetical) 'initTcFromCoreM' instead of
'initTc'.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes a number of related improvements:
* Displays relevant bindings in innermost-first order.
The inner ones are closer to the error.
* Does not display syntactically top-level bindings,
unless you say -fno-max-relevant-bindings.
This is what Trac #8233 was mainly about
* Makes the TopLevelFlag in a TcIdBinder really mean
"syntactically top level". It was a bit vague before.
There was some associated simplification, because we no longer
need to pas a TopLevelFlag to tcMonoBinds and friends.
|
| |
|
|
|
| |
See Note [Quantification with errors]
Fixes Trac #8262
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This is what I get for being so hasty for release notes.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
| |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
| |
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |
|
|
|
|
|
|
|
| |
7.6 deprecated the Control.Concurrent.QSem module (to be removed later,)
but according to Patrick it was actually un-deprecated. As a result,
validate fails if your bootstrap compiler is 7.6, since it throws a
DEPRECATED warning.
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
| |\ |
|
| | |\ |
|
| | | | |
|
| | |\ \ |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We can no longer use atomic_inc() in the stage1 compiler because its
prototype was recently changed.
Since the stage1 compiler is always single-threaded, only use
atomic_inc() when THREADED_RTS is defined.
|