| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
This ends up being important since there is a subtle difference between
two CmmUnwinds and one in the presence of the (-1) offset applied to
frame information for blocks with info tables. This is because the
offset will only be applied to the first CmmUnwind within a block, even
if the two nodes apply to the same address.
|
| |
|
|
|
|
|
|
|
|
| |
We now wrap the set of unwinding points within a block in a newtype to
mark the fact that they must be sorted by the order that the labels
occur in the block. Moreover, we fix an oversight in the
previous design where unwind information would be duplicated while
propagating unwinding information from predecessor blocks.
|
| |
|
|
|
|
|
|
|
|
| |
Otherwise we might end up with a reference to a block that was
eliminated during flow control.
Ideally we would just ensure that these unwindings are dropped along
with the block itself.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This actually just gives us the *ability* to produce unwind information.
The unwind information itself will be implemented next.
|
|
|
|
| |
Fixes #11337.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we can only use unwind information at the beginning of a block
since we otherwise have no label to apply it to. This, of course, isn't
nearly expressive enough to properly encode unwinding for general
programs. For this reason, we want to be able to include unwind
information at arbitrary points within a block.
This is a first step in this direction, ensuring that all unwind nodes
We accomplish this by making `CmmUnwind` carry a label, which the NCG
will emit into the block and which the Dwarf generator can refer to in
the unwind tables it produces.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a procedure has an info table we should also assume that its first
block does lest it will not get the necessary offset to ensure that
C-debugging tools find valid debug information.
This was manifested as backtrace acquisition entering an infinite loop
while attempting to unwind `stg_forceIO`, which had invalid call frame
information on account this bug.
Test Plan: Validate
Reviewers: scpmw, austin
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1532
|
|
|
|
|
|
|
|
|
| |
The interfaces to {save,load}ThreadState were quite messy due to the
need to pass in local registers (produced with draws from a unique
supply) since they were used from both FCode and UniqSM.
This, however, is entirely unnecessary as we already have an
abstraction to capture this effect: MonadUnique. Use it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In T10689a.hs, the fragment
data instance Sing (z :: [a])
= z ~ '[] =>
SNil
| forall (m :: a)
(n :: [a]). z ~ (:) m n =>
SCons (Sing m) (Sing n)
ends up with the AnnTilde annotations for the two tildes not attached to
the final AST.
This patch moves the AnnTilde to the right place.
Closes #11321
|
|
|
|
|
|
|
|
|
| |
runRW# isn't inlined until CorePrep, so it's good to expose its
strictness. Moreover, if we don't we can get obscure failures
in coreToStg; see Note [runRW arg] in CorePrep.
This fixes Trac #11291, and makes DfltProb1 compile with -O
always in order to expose it more vigorously
|
|
|
|
| |
Troublesome commit in Cabal was reverted.
|
|
|
|
|
|
| |
This fixes the instance to be semantically cleaner but other than that
this fix has no practical consequences as the implementations of
`Monad(fail)` and `MonadFail(fail)` for `ReadP` coincide.
|
|
|
|
|
|
|
| |
This refactoring exploits the fact that since AMP, in most cases,
`instance MonadPlus` can be automatically derived from the respective
`Alternative` instance. This is because `MonadPlus`'s default method
implementations are fully defined in terms of `Alternative(empty, (<>))`.
|
| |
|
|
|
|
|
| |
This pulls in a fix to suppress a `hsc2hs`-related
warning in the windows backend.
|
|
|
|
|
|
| |
As we're requiring GHC >= 7.10 now, the conditional handling introduced
in 9e133b9dccec0553c6ec302d6ca0d3bc5eea06c4 for addressing #8182 can be
made unconditional, and thus simplify the build-system a little bit.
|
|
|
|
|
|
| |
This code was introduced in 66218d15b7c27a4a38992003bd761f60bae84b1f to
use `-package-name` for GHC 7.8, whereas GHC 7.10 needs the new
`-this-package-key` flag.
|
|
|
|
|
|
| |
Starting with GHC 7.10 and base-4.8, `Monad` implies `Applicative`,
which allows to simplify some definitions to exploit the superclass
relationship. This a first refactoring to that end.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since GHC 8.1/8.2 only needs to be bootstrap-able by GHC 7.10 and
GHC 8.0 (and GHC 8.2), we can now finally drop all that pre-AMP
compatibility CPP-mess for good!
Reviewers: austin, goldfire, bgamari
Subscribers: goldfire, thomie, erikd
Differential Revision: https://phabricator.haskell.org/D1724
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quoting the POSIX standard for the `-D` C compiler flag:
-D name[=value]
Define name as if by a C-language #define directive.
If no `=value` is given, a value of 1 shall be used.
[...]
Removing this explicit `=1` definition from `-D` flags which are used to
define boolean macro constants makes the CLI invocation a bit more
idiomatic and reduces visual noise in debugging output
(flags containing `=`s are additionally put in single-quotes by GHC)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using `YES`/`NO` causes all sorts of problems as CPP doesn't work on
symbolic tokens but rather on scalar values.
A use like
#if __GLASGOW_HASKELL_TH__==YES
{-# LANGUAGE TemplateHaskell #-}
#endif
doesn't do what one may naively expect, and neither does
#if __GLASGOW_HASKELL_TH__
{-# LANGUAGE TemplateHaskell #-}
#endif
*unless* `YES` happens to evaluate to a non-zero scalar.
`__GLASGOW_HASKELL_TH__ was originally introduced via D396 / #9734.
Fixes #11322
Reviewed By: austin
Differential Revision: https://phabricator.haskell.org/D1723
|
|
|
|
|
|
|
| |
In 3549c952b535803270872adaf87262f2df0295a4 a `include/ghcversions.h` include
file was introduced which defines `__GLASGOW_HASKELL__` as well.
So there's no need to define it twice.
|
| |
|
| |
|
|
|
|
|
|
| |
This fixes Trac #11290, by being sligthtly cleverer about finding
what expressions are bottom. Actually this might have minor
other side benefits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Observed failure on ia64 as:
"inplace/bin/hsc2hs" \
... \
--cflag=-Dia64_HOST_ARCH=1 --cflag=-Dlinux_HOST_OS=1 \
... \
libraries/ghci/./GHCi/InfoTable.hsc \
-o libraries/ghci/dist-install/build/GHCi/InfoTable.hs
InfoTable.hsc:84:2: error: #error Unknown architecture
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
|
|
|
|
|
|
| |
- Export unicodeAnn from GHC
- unicodeAnn for Annlarrowtail was wrong
- Use actual source for a CImport SourceText
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When there is an uncovered vector of length 0 (which in turn means that
it represents a guard failure) print "(incomplete guards)" instead of an
empty list of non-covered vectors.
Test Plan: validate
Reviewers: austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1717
GHC Trac Issues: #11245
|
|
|
|
| |
This updates the haddock submodule
|
|
|
|
|
|
|
| |
Detected by sphinx as:
ERROR: Unexpected indentation.
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
|
|
|
|
| |
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Brought 'CCS_MAIN' into scope, otherwise UNREG
prof build is unhappy:
rts_dist_HC rts/dist/build/PrimOps.p_o
/tmp/ghc25593_0/ghc_3.hc: In function 'clB_entry':
/tmp/ghc25593_0/ghc_3.hc:2983:24: error:
error: 'CCS_MAIN' undeclared (first use in this function)
*((P_)(_cly+8)) = (W_)&CCS_MAIN;
^
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
|
| |
|
| |
|
| |
|
|
|
|
| |
As suggested by @thomie.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
In the fallthrough case when doing a subsumption case, we
need to deeply instantiate to remove any buried foralls in
the "actual" type.
Once this validates, please feel free to commit it; I may not
have the chance to do this on Tuesday. Back in full action on
Wed.
Test Plan: ./validate, typecheck/should_compiler/T11305
Reviewers: austin, bgamari, hvr
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1715
GHC Trac Issues: #11305
|
|
|
|
|
|
|
| |
On AIX, `ld` doesn't support `-x` and ignores it. However, a warning is
emitted to stderr which ends up triggering false positives in some of
GHC's testsuite tests. So we simply filter out that noise as part of
normalising stderr.
|
|
|
|
|
|
|
| |
This test is no longer legitimate as the feature it tests was removed
from Cabal via
https://git.haskell.org/packages/Cabal.git/commitdiff/5d20551e44e565bad6335fa213fc4ad592db7225
|
| |
|