| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
We do this through a gnu as feature called subsections,
where you can put data/code into a numbered subsection
and those subsections will be joined together in descending
order by gas at compile time.
|
| |
|
|
|
| |
The default object mode is already HscC, so it's unnecessary, and
-fvia-C generates a deprecated flag warning now.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Get the set of free variables from the generated case expression:
includes variables in the guards and decls that were missed before,
and is also a bit simpler.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was done as part of an honours thesis at UNSW, the paper describing the
work and results can be found at:
http://www.cse.unsw.edu.au/~pls/thesis/davidt-thesis.pdf
A Homepage for the backend can be found at:
http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM
Quick summary of performance is that for the 'nofib' benchmark suite, runtimes
are within 5% slower than the NCG and generally better than the C code
generator. For some code though, such as the DPH projects benchmark, the LLVM
code generator outperforms the NCG and C code generator by about a 25%
reduction in run times.
|
| |
|
|
|
|
|
| |
GHCi was building its GlobalRdrEnv wrongly, so that the
gre_par field was bogus. That in turn fooled the renamer.
The fix is easy: use the right function! Namely, call
RnNames.gresFromAvail rather than availsToNameSet.
|
| | |
|
| | |
|
| |
|
|
|
| |
This was just a blatant omission, which hasn't come up before.
Easily fixed, happily.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Now we only want about "T is a type function and might not be
injective" when matchin (T x) against (T y), which is the case
that is really confusing.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a long-lurking bug that has been flushed into
the open by other arity-related changes. There's a
long comment
Note [CafInfo and floating]
to explain.
I really hate the contortions we have to do through to keep correct
CafRef information on top-level binders. The Right Thing, I believe,
is to compute CAF and arity information later, and merge it into the
interface-file information when the latter is generated.
But for now, this hackily fixes the problem.
|
| |
|
|
|
|
| |
In cpePair I did things in the wrong order so that something that
should have been a CprRhs wasn't. Result: a crash in CoreToStg.
Fix is easy, and I added more informative type signatures too.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
See Note [DFun unfoldings] in CoreSyn. The issue here is that
you can't tell how many dictionary arguments a DFun needs just
from looking at the Arity of the DFun Id: if the dictionary is
represented by a newtype the arity might include the dictionary
and value arguments of the (single) method.
So we need to record the number of arguments need by the DFun
in the DFunUnfolding itself. Details in
Note [DFun unfoldings] in CoreSyn
|
| | |
|
| |
|
|
|
| |
Just putting parens around non-atomic expressions isn't sufficient
for splices, as only the $x and $(e) forms are valid input.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
f :: Eq a => a -> a
rather than
f :: (Eq a) => a -> a
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
PPC.CodeGen.getRegister was not properly handling PicBaseReg.
It seems working with this patch, but I'm not sure this change is correct.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes Trac #4056, by
a) tidying up the treatment of default method names
b) removing the 'module' argument to newTopSrcBinder
The details aren't that interesting, but the result
is much tidier. The original bug was a 'nameModule' panic,
caused by trying to find the module of a top-level name.
But TH quotes generate Internal top-level names that don't
have a module, and that is generally a good thing.
Fixing that in turn led to the default-method refactoring,
which also makes the Name for a default method be handled
in the same way as other derived names, generated in BuildTyCl
via a call newImplicitBinder. Hurrah.
|
| |
|
|
|
|
|
|
|
|
| |
Since the RULE from specialising gets the same Activation as
the inlining for the Id itself there's no point in specialising
a NOINLINE thing, because the rule will be permanently switched
off.
See Note [Transfer activation] in SpecConstr
and Note [Auto-specialisation and RULES] in Specialise.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Fixes a build failure on OS X 10.6. When linking
rts/dist/build/libHSrts-ghc6.13.20100519.dylib
we got
ld: symbol dyld_stub_binding_helper not defined (usually in crt1.o/dylib1.o/bundle1.o)
collect2: ld returned 1 exit status
|
| |
|
|
|
|
|
|
|
|
| |
Later packages are supposed to shadow earlier ones in the stack,
unless the ordering is overriden with -package-id flags.
Unfortunately an earlier fix for something else had sorted the list of
packages so that it was in lexicographic order by installedPackageId,
and sadly our test (cabal/shadow) didn't pick this up because the
lexicographic ordering happened to work for the test. I've now fixed
the test so it tries both orderings.
|
| |
|
|
| |
This will hopefully fix #2889.
|
| |
|
|
|
| |
We still need the workaround for when compiling HEAD with 6.12.2
|
| | |
|