| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
refactoring (use record fields instead of selector functions)
From: Autrijus Tang <autrijus@autrijus.org>
|
|
|
|
|
|
| |
add splitHsFunType
From: Autrijus Tang <autrijus@autrijus.org>
|
|
|
|
|
|
| |
small refactoring
From: Autrijus Tang <autrijus@autrijus.org>
|
|
|
|
| |
x86 & PIC: make floating point constants on x86 PIC-aware
|
|
|
|
| |
PowerPC: track changes in the rest of the register allocator
|
|
|
|
| |
in --make mode, don't re-link when the executable is up to date.
|
|
|
|
| |
Make outOfLineFloatOp PIC/dynamic-linking-aware on i386
|
|
|
|
|
| |
Fix last commit: it's opt_Static in the HEAD branch, not a local variable
"static".
|
|
|
|
| |
PIC version for genSwitch on i386
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A hack to make -dynamic work again:
when a library listed in extraLibraries ends with "_cbits", append "_dyn"
when -dynamic is passed, i.e. extraLibraries = ["foo", "HSbase_cbits"]
loads -lfoo and -lHSbase_cbits in the static case, but -lfoo and
-lHSbase_cbits_dyn in the -dynamic case.
It's an ugly hack, but it affects only the case when -dynamic is passed,
which would not work otherwise right now, so let's
MERGE TO STABLE
|
|
|
|
|
|
| |
only set bootstrapped=YES if the version we're building with is
exactly the *same* as the version being built, rather than a later
version.
|
|
|
|
|
| |
Somehow, I managed to commit the wrong version of yesterday's hack.
Sigh. Try again.
|
|
|
|
| |
Fix previous hack to avoid non-standard sed options
|
|
|
|
| |
workaround a bug in GHC 6.4's --optdep--exclude-module flag
|
|
|
|
|
|
| |
Never use an installed Cabal package when building GHC (except when
bootstrapping in stages 2 & 3). This insulates us from changes the
user may have made to their Cabal installation.
|
|
|
|
|
|
| |
Darwin/x86:
Honour the 16-byte stack alignment requirement when ccalling from the NCG.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GHC claims to lift the H98 restriction that a class method must not
add a constraint on the class type variable (manual 7.4.2.1 "Class
method types"). But the validity check was incorrect in the case
where the class method had a forall. E.g.
class C a where
op :: forall b. (Show b, Show a) => ...
This commit fixes the bug.
tcrun037, and tcfail149, test with and without -fglasgow-exts.
MERGE TO STABLE
|
|
|
|
| |
Slightly improve overlap checking; could merge to STABLE
|
|
|
|
| |
Make -fno-code work again
|
|
|
|
|
|
| |
add pprInstanceHdr function. It is analogous to pprTyThingHdr and prints the
instance but without the "-- Defined at ...." comment. The function is used in
VStudio to populate the ClassView tree.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Remove redundant coerces. Something that started life as
coerce a b <expr>
might change to
coerct Int Int <expr>
after the types a,b are instantiated.
2. Get rid of the "bad eta expand" message. It can happen entirely legitimately.
See comments in CoreUtils with eta_expand.
MERGE TO STABLE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the forkM failure fail more tidily. Interface-file inconsistencies
give rise to failures in the IfM monad. An error message is printed, but
up to now we've also said "The impossible happened, must be a GHC bug".
That's not true, though, it could just be messed up interface files.
So this commit still makes the compiler halt, but in a tidier, less
self-accusatory way.
Still to come: when original names in interface files mention the
package Id too, the error will become clearer still.
MERGE to STABLE
|
|
|
|
| |
Fix typos
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use a better string hash: the previous one only took into account 3
characters from the string (0, N/2, N), leading to some bad collisions
with lots of similar strings (eg. local names generated by the
compiler). Worse, it had a bug in the N==2 case, which meant that it
ignored one of the characters in the string completely.
We now traverse the whole string, using the algorithm from Data.Hash
which seems to work reasonably well.
For good measure, I quadrupled the size of the hash table too, from
1000 to 4000 entries.
|
|
|
|
|
|
| |
inline unsafePerformIO for eqStrPrefix/eqStrPrefixBA. These functions
are fairly time-critical pieces of the FastString system, and using
unsafePerformIO here was causing unnecessary allocation.
|
|
|
|
|
|
|
|
|
|
|
| |
More inlining changes from SimonPJ & me: The Plan is to avoid relying
on knowledge of OneOcc occurrences after postInlineUnconditionally, so
we now attempt to make use of OneOcc as far as possible in in
pre/postInlineUnconditionally rather than the call site. Plenty of
comments in the code with more details.
This change almost always improves performance on nofib; we have one
program that goes slower, which we'll investigate in due course.
|
|
|
|
| |
Grr: another wibble to duplicate signature detection
|
|
|
|
|
| |
exprIsCheap: fix a bug whereby an over-applied ClassOp or RecordSel
would be considered cheap.
|
|
|
|
|
| |
fix bug in slurpSCCs that causes SCCs to be pushed in the wrong order
on closures occasionally.
|
|
|
|
| |
Ack! Ack!
|
|
|
|
| |
Ack! missed one!
|
|
|
|
| |
Further wibbles to moving dependency analysis back to renamer; fixes ghci failures
|
|
|
|
| |
Wibble; fixes TH failures
|
|
|
|
| |
Fix bogon in reporting of duplicate sigs; make mod68 work again
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do 'tidying' on Kinds before printing them. This avoids printing
stuff like 'k_43b' in user error messages.
To do this, I ended up adding an OccName to Kind.KindVar. Even
then the implementation is a bit of hack (see comments with
Type.tidyKind). Still, it's a highly localised hack, whereas the
"right thing" entails making KindVar into a flavour of Var, which
seems like an uncomfortably big change.
I think this change can merge to the stable branch
|
|
|
|
| |
Rename exprIsValue to exprIsHNF, which is more accurate
|
|
|
|
|
|
|
|
|
|
|
|
| |
It turned out that doing all binding dependency analysis in the typechecker
meant that the renamer's unused-binding error messages got worse. So now
I've put the first dep anal back into the renamer, while the second (which
is specific to type checking) remains in the type checker.
I've also made the pretty printer sort the decls back into source order
before printing them (except with -dppr-debug).
Fixes rn041.
|
|
|
|
|
|
|
|
| |
Fix a bug caused by the change in representation for NPats;
the pattern-overlap checker didn't know about the change,
and so treated +1 and -1 as equal...
MERGE to STABLE
|
|
|
|
| |
Fix pretty-printing bug for NPat; MERGE to STABLE
|
|
|
|
| |
Wibble to loadHomeInterface for TH quoting; MERGE to STABLE
|
|
|
|
| |
Comments
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mapUFM was strict in the structure of the tree, perhaps accidentally.
In any case, this interacted badly with the use of mapVarEnv in
SimplEnv.mkCoreSubst, which assumed that the map was lazy.
mapUFM is now lazy in the structure of the tree, which matches the
behaviour of FiniteMap.mapFM.
This fixes some long compilation times, in particular HTMLMonad98.hs
from WASH used to take 2 mins to compile without optimisation, now
takes less than 20 seconds.
|
|
|
|
|
| |
callSiteInline: consider inlining even the once-in-one-branch
occurrences. See comment for details.
|
|
|
|
|
|
|
| |
preInlineUnconditionally: replace exprIsValue call with home-grown
version to fix loss-of-sharing that arises because exprIsValue doesn't
necessarily mean "ok to inline inside a lambda". Fixes last night's
10queens test failures.
|
|
|
|
| |
fix bogus #ifdef in defaultHscTarget
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch from SimonPJ (slightly tweaked by me after checking performance
results):
Fix occasional O(n^2) behaviour in the simplifier. There was a
possibility that by inlining a binding, we could re-simplify an
arbitrary sized expression. This patch fixes it by moving the
inlining of arbitrary-sized expressiong to the binding site
(preInlineUnconditionally), so the decision to inline happens before
simplifying the RHS. To do this, we have to collect more information
during the occurrence analysis phase.
We still make inlining decisions at the call site, but they are always
size-limited, so we can't get quadratic blowup.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix the location of _stub.o files when compiling with -odir. The
comment from the source:
-- The _stub.c file is derived from the haskell source file (but stored
-- in hscStubCOutName in the dflags for some reason, probably historical).
-- Consequently, we derive the _stub.o filename from the haskell object
-- filename.
--
-- This isn't necessarily the same as the object filename we
-- would get if we just compiled the _stub.c file using the pipeline.
-- For example:
--
-- ghc src/A.hs -odir obj
--
-- results in obj/A.o, and src/A_stub.c. If we compile src/A_stub.c with
-- -odir obj, we would get obj/src/A_stub.o, which is wrong; we want
-- obj/A_stub.o.
|
|
|
|
|
| |
- move instance Show FastString into FastString module
- instance Outputable FastString should use ftext instead of unpackFS
|
|
|
|
| |
A little bit of strictness (doesn't actually help much)
|
|
|
|
| |
Fix an SCC
|