summaryrefslogtreecommitdiff
path: root/compiler/ghc.cabal.in
Commit message (Collapse)AuthorAgeFilesLines
* Merge master into the ghc-new-co branchSimon Peyton Jones2011-05-061-16/+1
|\
| * Remove the OMIT_NATIVE_CODEGEN ifdefIan Lynagh2011-05-011-12/+1
| | | | | | | | | | | | We now test cGhcWithNativeCodeGen == "YES" instead.
| * Remove dead Alpha native backend.Edward Z. Yang2011-04-301-4/+0
| | | | | | | | Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
* | This BIG PATCH contains most of the work for the New Coercion RepresentationSimon Peyton Jones2011-04-191-0/+2
|/ | | | | | | | | | | | | | See the paper "Practical aspects of evidence based compilation in System FC" * Coercion becomes a data type, distinct from Type * Coercions become value-level things, rather than type-level things, (although the value is zero bits wide, like the State token) A consequence is that a coerion abstraction increases the arity by 1 (just like a dictionary abstraction) * There is a new constructor in CoreExpr, namely Coercion, to inject coercions into terms
* Change the way module initialisation is done (#3252, #4417)Simon Marlow2011-04-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the code generator generated small code fragments labelled with __stginit_M for each module M, and these performed whatever initialisation was necessary for that module and recursively invoked the initialisation functions for imported modules. This appraoch had drawbacks: - FFI users had to call hs_add_root() to ensure the correct initialisation routines were called. This is a non-standard, and ugly, API. - unless we were using -split-objs, the __stginit dependencies would entail linking the whole transitive closure of modules imported, whether they were actually used or not. In an extreme case (#4387, #4417), a module from GHC might be imported for use in Template Haskell or an annotation, and that would force the whole of GHC to be needlessly linked into the final executable. So now instead we do our initialisation with C functions marked with __attribute__((constructor)), which are automatically invoked at program startup time (or DSO load-time). The C initialisers are emitted into the stub.c file. This means that every time we compile with -prof or -hpc, we now get a stub file, but thanks to #3687 that is now invisible to the user. There are some refactorings in the RTS (particularly for HPC) to handle the fact that initialisers now get run earlier than they did before. The __stginit symbols are still generated, and the hs_add_root() function still exists (but does nothing), for backwards compatibility.
* Merge in new code generator branch.Simon Marlow2011-01-241-19/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | This changes the new code generator to make use of the Hoopl package for dataflow analysis. Hoopl is a new boot package, and is maintained in a separate upstream git repository (as usual, GHC has its own lagging darcs mirror in http://darcs.haskell.org/packages/hoopl). During this merge I squashed recent history into one patch. I tried to rebase, but the history had some internal conflicts of its own which made rebase extremely confusing, so I gave up. The history I squashed was: - Update new codegen to work with latest Hoopl - Add some notes on new code gen to cmm-notes - Enable Hoopl lag package. - Add SPJ note to cmm-notes - Improve GC calls on new code generator. Work in this branch was done by: - Milan Straka <fox@ucw.cz> - John Dias <dias@cs.tufts.edu> - David Terei <davidterei@gmail.com> Edward Z. Yang <ezyang@mit.edu> merged in further changes from GHC HEAD and fixed a few bugs.
* Fix vectorisation of recursive typesRoman Leshchinskiy2011-01-261-2/+0
|
* Split main/GHC into GHC and GhcMakesimonpj@microsoft.com2011-01-251-0/+1
| | | | | | | | | | | | | | | | | | | There are two things going on in main/GHC.hs. * It's the root module of the GHC package * It contains lots of stuff for --make It is also gigantic (2.7k lines) This patch splits it into two * GHC.hs is the root module for the GHC package (1.3k lines) * GhcMake.hs contains the stuff for --make (1.4k lines) Happily the functional split divided it almost exactly in half. This is a pure refactoring. There should be no behavioural change.
* Manually control more of the Cabal flags for the compiler and ghc packagesIan Lynagh2011-01-211-0/+3
| | | | | | For some reason the Windows HEAD builder has started thinking the ghci flag should be on in stage 1. This should fix it, and generally make things a little more resilient.
* Add NondecreasingIndentation to the list of extensions in the ghc packageIan Lynagh2011-01-171-0/+2
|
* Refactoring and tidyup of HscMain and related things (also fix #1666)Simon Marlow2010-10-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While trying to fix #1666 (-Werror aborts too early) I decided to some tidyup in GHC/DriverPipeline/HscMain. - The GhcMonad overloading is gone from DriverPipeline and HscMain now. GhcMonad is now defined in a module of its own, and only used in the top-level GHC layer. DriverPipeline and HscMain use the plain IO monad and take HscEnv as an argument. - WarnLogMonad is gone. printExceptionAndWarnings is now called printException (the old name is deprecated). Session no longer contains warnings. - HscMain has its own little monad that collects warnings, and also plumbs HscEnv around. The idea here is that warnings are collected while we're in HscMain, but on exit from HscMain (any function) we check for warnings and either print them (via log_action, so IDEs can still override the printing), or turn them into an error if -Werror is on. - GhcApiCallbacks is gone, along with GHC.loadWithLogger. Thomas Schilling told me he wasn't using these, and I don't see a good reason to have them. - there's a new pure API to the parser (suggestion from Neil Mitchell): parser :: String -> DynFlags -> FilePath -> Either ErrorMessages (WarningMessages, Located (HsModule RdrName))
* Bump dependenciesIan Lynagh2010-09-171-1/+1
|
* Super-monster patch implementing the new typechecker -- at lastsimonpj@microsoft.com2010-09-131-1/+4
| | | | | | | | | This major patch implements the new OutsideIn constraint solving algorithm in the typecheker, following our JFP paper "Modular type inference with local assumptions". Done with major help from Dimitrios Vytiniotis and Brent Yorgey.
* Don't use RelaxedPolyRec in the compiler; it's built in nowsimonpj@microsoft.com2010-07-191-1/+1
|
* Finish breaking up vectoriser utilsbenl@ouroborus.net2010-09-091-17/+21
|
* Move VectType module to Vectorise treebenl@ouroborus.net2010-09-091-4/+4
|
* Sort all the PADict/PData/PRDict/PRepr stuff into their own modulesbenl@ouroborus.net2010-09-091-0/+3
|
* Break out Repr and PADict stuff for vectorisation of ADTs to their own modulesbenl@ouroborus.net2010-09-091-0/+2
|
* Break out conversion functions to own modulebenl@ouroborus.net2010-09-091-0/+1
|
* Break out hoisting utils into their own modulebenl@ouroborus.net2010-09-081-0/+1
|
* Break out closure utils into own modulebenl@ouroborus.net2010-09-081-0/+1
|
* Move VectVar module to Vectorise treebenl@ouroborus.net2010-09-081-1/+1
|
* Break out vectorisation of expressions into own modulebenl@ouroborus.net2010-09-081-0/+1
|
* Break out TyCon classifier into own modulebenl@ouroborus.net2010-09-081-0/+1
|
* Break out vectorisation of TyConDecls into own modulebenl@ouroborus.net2010-09-081-0/+1
|
* Break out type vectorisation into own modulebenl@ouroborus.net2010-09-071-0/+1
|
* update for containers-0.4Simon Marlow2010-09-031-1/+1
|
* Finish breaking up VectBuiltIn and VectMonad, and add commentsbenl@ouroborus.net2010-08-311-2/+9
|
* Break up vectoriser builtins modulebenl@ouroborus.net2010-08-301-0/+2
|
* Move VectCore to Vectorise treebenl@ouroborus.net2010-08-301-1/+3
|
* LLVM: Add in new LLVM mangler for implementing TNTC on OSXDavid Terei2010-07-131-0/+1
|
* Add new LLVM code generator to GHC. (Version 2)David Terei2010-06-151-4/+15
| | | | | | | | | | | | | | | | | | 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.
* Allow filepath-1.2.*Simon Marlow2010-05-051-1/+1
|
* The bootstrapping compiler is now required to be > 609Ian Lynagh2010-04-091-3/+0
|
* Remove LazyUniqFM; fixes trac #3880Ian Lynagh2010-03-201-1/+0
|
* Substantial improvements to coercion optimisationsimonpj@microsoft.com2010-01-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The main purpose of this patch is to add a bunch of new rules to the coercion optimiser. They are documented in the (revised) Appendix of the System FC paper. Some code has moved about: - OptCoercion is now a separate module, mainly because it now uses tcMatchTy, which is defined in Unify, so OptCoercion must live higehr up in the hierarchy - Functions that manipulate Kinds has moved from Type.lhs to Coercion.lhs. Reason: the function typeKind now needs to call coercionKind. And in any case, a Kind is a flavour of Type, so it builds on top of Type; indeed Coercions and Kinds are both flavours of Type. This change required fiddling with a number of imports, hence the one-line changes to otherwise-unrelated modules - The representation of CoTyCons in TyCon has changed. Instead of an extensional representation (a kind checker) there is now an intensional representation (namely TyCon.CoTyConDesc). This was needed for one of the new coercion optimisations.
* Remove cprAnalysis directory from hs-source-dirssimonpj@microsoft.com2009-11-201-1/+0
|
* Remove the (very) old strictness analysersimonpj@microsoft.com2009-11-191-5/+0
| | | | | | | I finally got tired of the #ifdef OLD_STRICTNESS stuff. I had been keeping it around in the hope of doing old-to-new comparisions, but have failed to do so for many years, so I don't think it's going to happen. This patch deletes the clutter.
* Add missing CgExtCode to ghc.cabal.inBen.Lippmeier@anu.edu.au2009-11-061-0/+1
|
* Update dependenciesIan Lynagh2009-09-201-2/+2
|
* Remove the old package.conf parser, use read instead (fixed #3410)Simon Marlow2009-09-111-1/+0
| | | | | | Performance isn't an issue for reading the old-style package.conf files, so we might as well revert to using read and fix a bug at the same time.
* Change the representation of the package databaseSimon Marlow2009-09-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | - the package DB is a directory containing one file per package instance (#723) - there is a binary cache of the database (#593, #2089) - the binary package is now a boot package - there is a new package, bin-package-db, containing the Binary instance of InstalledPackageInfo for the binary cache. Also included in this patch - Use colour in 'ghc-pkg list' to indicate broken or hidden packages Broken packages are red, hidden packages are Colour support comes from the terminfo package, and is only used when - not --simple-output - stdout is a TTY - the terminal type has colour capability - Fix the bug that 'ghc-pkg list --user' shows everything as broken
* remove Haddock-lexing/parsing/renaming from GHCIsaac Dupree2009-08-261-2/+0
|
* Fix "Cabal check" warningsIan Lynagh2009-08-111-1/+1
|
* Remove GHC's haskell98 dependencyIan Lynagh2009-07-241-1/+1
|
* remove tabsSimon Marlow2009-07-071-2/+2
|
* Split Reg into vreg/hreg and add register pairsBen.Lippmeier@anu.edu.au2009-05-181-0/+1
| | | | | | | | | | | | | * The old Reg type is now split into VirtualReg and RealReg. * For the graph coloring allocator, the type of the register graph is now (Graph VirtualReg RegClass RealReg), which shows that it colors in nodes representing virtual regs with colors representing real regs. (as was intended) * RealReg contains two contructors, RealRegSingle and RealRegPair, where RealRegPair is used to represent a SPARC double reg constructed from two single precision FP regs. * On SPARC we can now allocate double regs into an arbitrary register pair, instead of reserving some reg ranges to only hold float/double values.
* Use haskeline, rather than editline, for line editing in ghciIan Lynagh2009-04-291-12/+0
|
* GHC new build system megapatchIan Lynagh2009-04-261-1/+18
|
* SPARC NCG: Base freeRegs on includes/MachRegs.h againBen.Lippmeier@anu.edu.au2009-04-201-0/+1
|