summaryrefslogtreecommitdiff
path: root/compiler/main
Commit message (Collapse)AuthorAgeFilesLines
* Remove static flag opt_RuntimeTypes (has not been used in years)simonpj@microsoft.com2008-04-221-3/+0
|
* Fix #2044 (:printing impredicatively typed things)pepe2008-04-211-3/+8
| | | | Switching to boxyUnify should be enough to fix this.
* Revive the static argument transformationsimonpj@microsoft.com2008-04-111-0/+10
| | | | | | | | | | | | | | | | This patch revives the Static Argument Transformation, thanks to Max Bolingbroke. It is enabled with -fstatic-argument-transformation or -O2 Headline nofib results Size Allocs Runtime Min +0.0% -13.7% -21.4% Max +0.1% +0.0% +5.4% Geometric Mean +0.0% -0.2% -6.9%
* Another round of External Core fixesTim Chevalier2008-04-101-1/+4
| | | | | | | | | | | | | | | With this patch, GHC should now be printing External Core in a format that a stand-alone program can parse and typecheck. Major bug fixes: - The printer now handles qualified/unqualified declarations correctly (particularly data constructor declarations) - It prints newtype declarations with enough information to typecheck code that uses the induced coercions (this required a syntax change) - It expands type synonyms correctly Documentation and external tool patches will follow.
* Improve error message for malformed LANGUAGE pragmaTim Chevalier2008-04-061-2/+3
| | | | | | I made the error (which previously said "cannot parse LANGUAGE pragma") slightly more helpful by reminding the user that pragmas should be comma-separated.
* Improve error message for non-matching file nameTim Chevalier2008-04-061-2/+3
| | | | | | I changed the "File name does not match module name" error message so that it prints out both the declared module name and the expected module name (before, it was only printing the declared module name.)
* Do not #include external header files when compiling via CSimon Marlow2008-04-023-41/+9
| | | | | | | | | | | | | | | | | | | | | | | This has several advantages: - -fvia-C is consistent with -fasm with respect to FFI declarations: both bind to the ABI, not the API. - foreign calls can now be inlined freely across module boundaries, since a header file is not required when compiling the call. - bootstrapping via C will be more reliable, because this difference in behavour between the two backends has been removed. There is one disadvantage: - we get no checking by the C compiler that the FFI declaration is correct. So now, the c-includes field in a .cabal file is always ignored by GHC, as are header files specified in an FFI declaration. This was previously the case only for -fasm compilations, now it is also the case for -fvia-C too.
* Don't import FastString in HsVersions.hIan Lynagh2008-03-2914-20/+7
| | | | Modules that need it import it themselves instead.
* Make use of the SDoc type synonymIan Lynagh2008-03-263-21/+16
|
* main/BreakArray has no warningsIan Lynagh2008-03-261-7/+0
|
* Fix warnings in main/DriverPhasesIan Lynagh2008-03-251-14/+24
|
* Remove redundant type sigIan Lynagh2008-03-251-1/+0
|
* Fix warnings in main/HscStatsIan Lynagh2008-03-251-18/+17
|
* Fix warnings in main/ConstantsIan Lynagh2008-03-251-43/+89
|
* Fix warnings in main/InteractiveEvalIan Lynagh2008-03-251-17/+27
|
* Fix warnings in main/PackagesIan Lynagh2008-03-251-11/+12
|
* Fix warnings in main/PprTyThingIan Lynagh2008-03-251-17/+27
|
* Fix warnings in main/StaticFlagsIan Lynagh2008-03-251-9/+49
|
* Follow library changesIan Lynagh2008-03-231-4/+6
| | | | | Integer, Bool and Unit/Inl/Inr are now in new packages integer and ghc-prim.
* Fix a space leak in :trace (trac #2128)Ian Lynagh2008-03-161-1/+1
| | | | | We were doing lots of cons'ing and tail'ing without forcing the tails, so were building up lots of thunks.
* If we are failing due to a warning and -Werror, say soIan Lynagh2008-03-161-4/+8
| | | | Fixes trac #1893, based on a patch from Daniel Franke.
* Remove ndpFlattenRoman Leshchinskiy2008-03-092-9/+2
| | | | | This patch removes the ndpFlatten directory and the -fflatten static flag. This code has never worked and has now been superceded by vectorisation.
* Fix Trac #2138: print the 'stupid theta' of a data typesimonpj@microsoft.com2008-03-061-2/+6
|
* Improve SpecConstr for local bindings: seed specialisation from the callssimonpj@microsoft.com2008-03-061-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes a significant improvement to SpecConstr, based on Roman's experience with using it for stream fusion. The main change is this: * For local (not-top-level) declarations, seed the specialisation loop from the calls in the body of the 'let'. See Note [Local recursive groups] for discussion and example. Top-level declarations are treated just as before. Other changes in this patch: * New flag -fspec-constr-count=N sets the maximum number of specialisations for any single function to N. -fno-spec-constr-count removes the limit. * Refactoring in specLoop and friends; new algebraic data types OneSpec and SpecInfo instead of the tuples that were there before * Be less keen to specialise on variables that are simply in scope. Example f p q = letrec g a y = ...g.... in g q p We probably do not want to specialise 'g' for calls with exactly the arguments 'q' and 'p', since we know nothing about them.
* Enable -prof -threaded (#886)Simon Marlow2008-02-281-0/+1
| | | | | | | | It turns out that -prof -threaded works (modulo some small changes), because all the data structures used in profiling are only accessed by one thread at a time, at long as we don't use +RTS -N2 or higher. So this patch enables the use of -prof -threaded, but an error is given if you ask for more than one CPU with +RTS -N.
* Fix Trac #2082simonpj@microsoft.com2008-02-191-1/+1
|
* Add type sigs and minor refactoringsimonpj@microsoft.com2008-02-221-3/+8
|
* FIX #2023: substitute for $topdir in haddockInterfaces and haddockHTMLsSimon Marlow2008-02-091-1/+4
|
* Print better error message for reading External CoreTim Chevalier2008-02-171-34/+3
| | | | | | | | | GHC panicked with a "Prelude.undefined" error message if you tried to compile a .hcr file. Since support for reading ExternalCore simply does not exist, I added an error message to say that. Please merge to 6.8. Thanks.
* Remove old code to get TMPDIR, use System.Directory.getTemporaryDirectorySimon Marlow2008-02-072-51/+6
|
* Symbolic tags for simplifier phasesRoman Leshchinskiy2008-02-111-19/+22
| | | | | | | | | | | | | | | | | | Every simplifier phase can have an arbitrary number of tags and multiple phases can share the same tags. The tags can be used as arguments to -ddump-simpl-phases to specify which phases are to be dumped. For instance, -ddump-simpl-phases=main will dump the output of phases 2, 1 and 0 of the initial simplifier run (they all share the "main" tag) while -ddump-simpl-phases=main:0 will dump only the output of phase 0 of that run. At the moment, the supported tags are: main The main, staged simplifier run (before strictness) post-worker-wrapper After the w/w split post-liberate-case After LiberateCase final Final clean-up run The names are somewhat arbitrary and will change in the future.
* Allow -ddump-simpl-phases to specify which phases to dumpRoman Leshchinskiy2008-02-112-8/+46
| | | | | We can now say -ddump-simpl-phases=1,2 to dump only these two phases and nothing else.
* Remove some of the old compat stuff now that we assume GHC 6.4Simon Marlow2008-02-082-11/+0
|
* Convert more UniqFM's back to LazyUniqFM'sIan Lynagh2008-02-076-6/+6
| | | | | | | | | | | | | | | These fix these failures: break008(ghci) break009(ghci) break026(ghci) ghci.prog009(ghci) ghci025(ghci) print007(ghci) prog001(ghci) prog002(ghci) prog003(ghci) at least some of which have this symptom: Exception: expectJust prune
* Inject implicit bindings before the simplifier (Trac #2070)simonpj@microsoft.com2008-02-051-35/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With constructor unpacking, it's possible for constructors and record selectors to have non-trivial code, which should be optimised before being fed to the code generator. Example: data Foo = Foo { get :: {-# UNPACK #-} !Int } Then we do not want to get this: T2070.get = \ (tpl_B1 :: T2070.Foo) -> case tpl_B1 of tpl1_B2 { T2070.Foo rb_B4 -> let { ipv_B3 [Just S] :: GHC.Base.Int [Str: DmdType m] ipv_B3 = GHC.Base.I# rb_B4 } in ipv_B3 } If this goes through to codegen, we'll generate bad code. Admittedly, this only matters when the selector is used in a curried way (e.g map get xs), but nevertheless it's silly. This patch injects the implicit bindings in SimplCore, before the simplifier runs. That slows the simplifier a little, because it has to look at some extra bindings; but it's probably a slight effect. If it turns out to matter I suppose we can always inject them later, e.g. just before the final simplification. An unexpected (to me) consequence is that we get some specialisation rules for class-method selectors. E.g. we get a rule RULE (==) Int dInt = eqInt There's no harm in this, but not much benefit either, because the same result will happen when we inline (==) and dInt, but it's perhaps more direct.
* xcode build target for fixed /Library/Frameworks instManuel M T Chakravarty2008-02-051-1/+7
| | | | | - Also moving all MacOS-specific Makefile components into distrib/MacOS/Makefile
* Fix warnings on non-WindowsIan Lynagh2008-01-301-5/+2
|
* Fixed warnings in main/ErrUtilsTwan van Laarhoven2008-01-271-10/+5
|
* Fixed warnings in main/HeaderInfo, except for incomplete pattern matchesTwan van Laarhoven2008-01-271-10/+15
|
* Fixed warnings in main/DynFlagsTwan van Laarhoven2008-01-271-9/+37
|
* seqMaybe is more commonly known as mplusTwan van Laarhoven2008-01-171-2/+3
|
* FIX #1750: throw out mutually recursive groups of packagesSimon Marlow2008-01-231-14/+23
|
* cleanup onlySimon Marlow2008-01-221-7/+1
|
* Fix warnings in main/CmdLineParserIan Lynagh2008-01-211-87/+85
|
* Normalise FilePaths before printing themIan Lynagh2008-01-201-8/+10
|
* Fix warnings in main/MainIan Lynagh2008-01-191-15/+20
|
* Support multiple -e flagsIan Lynagh2008-01-191-5/+12
|
* Fix whitespaceIan Lynagh2008-01-191-12/+12
|
* Fix giving an error if we are given conflicting mode flagsIan Lynagh2008-01-191-4/+4
|
* Use -framework-path flags during the cc phase. Fixes trac #1975.judah.jacobson@gmail.com2007-12-121-0/+10
|