| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch unbreaks ghci on GRSEC kernels hardened with
TPE (Trusted Path Execution) protection.
TPE forbids mmap('rwx') files opened for writes:
fd = open (a_file_in_tmp, O_RDWR);
mmap (..., PROT_READ | PROT_WRITE | PROT_EXEC, fd);
while allows anonymous RWX mappings:
mmap (...MAP_ANONYMOUS , PROT_READ | PROT_WRITE | PROT_EXEC, -1);
Thanks to klondike for finding it out.
The result of a horrible typo.
(unreleased yet) upstream also has the patch:
http://github.com/atgreen/libffi/commit/eaf444eabc4c78703c0f98ac0197b1619c1b1bef
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
If I had a pound for every hour Dimitrios and I have spent
making functional dependencies work right, we'd be rich!
We had stupidly caused a 'wanted' to be rewritten by a 'derived', with
resulting abject failure. As well as fixing the bug, this patch
refactors some more, adds useful assert and comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, on register-deficient architectures like x86-32,
the new code generator would emit code for calls to stg_gc_l1,
stg_gc_d1 and stg_gc_f1 that pushed their single argument on
to the stack, while the functions themselves expected the
argument to live in L1, D1 and F1 (respectively). This was
because cmmCall with the GC calling convention allocated real
registers, not virtual registers.
This patch modifies the code for assigning registers/stack slots
to use the right calling convention for GC and adds an assertion
to ensure it did it properly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added a pragma {-# VECTORISE var = exp #-} that prevents
the vectoriser from vectorising the definition of 'var'.
Instead it uses the binding '$v_var = exp' to vectorise
'var'. The vectoriser checks that the Core type of 'exp'
matches the vectorised Core type of 'var'. (It would be
quite complicated to perform that check in the type checker
as the vectorisation of a type needs the state of the VM
monad.)
- Added parts of a related VECTORISE SCALAR pragma
- Documented -ddump-vect
- Added -ddump-vt-trace
- Some clean up
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a corrected fix for ticket #4867, "ghci displays negative floats
incorrectly". The previous patch sometimes gave incorrect offset to values
in the __const section of the __TEXT segment. The new patch arranges a zero
fixup for non-external, not-global offset table signed relocations. This
is apparently what is required, though documentation on this point is scarce.
With this change Doubles are negated properly, because the sign bit mask
is loaded from the correct offset. This was tested both on HEAD and the 7.0
branch.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This is just a program that exploits overlapping
instances in a delicate way. The fix makes GHC
a bit more friendly towards such programs.
See Note [Overlap and deriving] in TcSimplify
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When we spot an equality arising from a functional dependency,
we now use that equality (a "wanted") to rewrite the work-item
constraint right away. This avoids two dangers
Danger 1: If we send the original constraint on down the pipeline
it may react with an instance declaration, and in delicate
situations (when a Given overlaps with an instance) that
may produce new insoluble goals: see Trac #4952
Danger 2: If we don't rewrite the constraint, it may re-react
with the same thing later, and produce the same equality
again --> termination worries.
To achieve this required some refactoring of FunDeps.lhs (nicer
now!).
This patch also contains a couple of unrelated improvements
* A bad bug in TcSMonad.nestImplicTcS whereby the Tcs tyvars
of an outer implication were not untouchable inside
* Improved logging machinery for the type constraint solver;
use -ddump-cs-trace (probably with a wider default line width
-dppr-cols=200 or something)
|
|
|
|
|
|
| |
Now that exprIsDupable is less aggressive, test MethSharing wasn't
doing enough inlining. Increasing the threshold fixes the problem
but the real fix is in Trac #4960.
|
|
|
|
|
|
|
|
| |
This bug was causing a Lint error on the stable branch. For some
reason it doesn't show up in HEAD, but it's still worth fixing.
The point is that ((f `cast` co) a) is cheap if f has arity>1.
This was being gratuitously missed before.
|
|
|
|
| |
(This was part of an experiment I abandoned.)
|
|
|
|
|
|
|
|
|
| |
It turns out that exprIsDupable would return True for an expression of
*arbitrary* size, provide it was a nested bunch of applications in
which no function had more than three arguments. That was never the
intention, and could give rise to massive code duplication.
This patch makes it much less aggressive.
|
|
|
|
|
|
|
| |
The ThunkSplitting idea in WorkWrap wasn't working at all,
leading to Trac #4957. The culprit is really the simplifier
which was combining the wrong case continuations. See
Note [Fusing case continuations] in Simplify.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This was a bug in 6.12.3. I think the problem no longer occurs due to
the way sparks are treated as weak pointers, but it doesn't hurt to
test for tagged pointers anyway: better to do the test than have a
subtle invariant.
|
|
|
|
|
|
|
| |
Local let binders in IfaceExpr never used to have unfoldings,
but lately they can (becuase they can have an INLINE pragma).
We must take account of the variables mentioned in the pragma
when computing the fingerprint.
|
| |
|
|
|
|
|
|
|
| |
The old llvm mangler was horrible! Very slow
due to bad design and code. New version is
linear complexity as it should be and far
lower coefficients. This fixes trac 4838.
|
|
|
|
|
|
|
| |
In a bindist, we generate files like the hsc2hs wrapper.
This means we need to have the right values for the variables like
CONF_GCC_LINKER_OPTS_STAGE1 which in turn means we need to know what
platform we're on.
|
|
|
|
|
| |
This fixes Trac #4935. See Note [Preparing inert set for implications].
Lots of comments, but not a lot of code is changed!
|
| |
|
|
|
|
| |
This resulted in double unifications. Fix is trivial.
|
|
|
|
| |
This patch just adds an assert error.
|
| |
|
|
|
|
|
| |
Now that we've stopped trying to support 64bit OS X 10.5, the DTrace
problems there don't matter.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes the erroneous relocations that caused
the bug in ticket #4867. External addresses and global
offset table entries were relocated correctly, but all other
relocations were incorrectly calculated. This caused, for
example, bad references to constants stored in the __const
section of the __TEXT segment.
This bug only affected OS X on 64-bit platforms.
|
|
|
|
| |
so it worked before anyway). Makes us more future-proof, at least
|
| |
|
| |
|
| |
|
|
|
|
| |
There might be more simplification to do.
|
| |
|
|
|
|
| |
You can now quasi-quote things with unboxed types, and unboxed tuples.
|
|
|
|
|
| |
See Trac #4949, where having a TH bracket implication
was messing things up. Better to get rid of it right away.
|
| |
|
| |
|
|
|
|
|
| |
The finder was reporting a hidden package when it meant a hidden
module, and vice versa (looks like a typo).
|