- 29 May, 2009 1 commit
-
-
simonpj@microsoft.com authored
The new flag -XMonoLocalBinds tells GHC not to generalise nested bindings in let or where clauses, unless there is a type signature, in which case we use it. I'm thinking about whether this might actually be a good direction for Haskell go to in, although it seems pretty radical. Anyway, the flag is easy to implement (look at how few lines change), and having it will allow us to experiement with and without. Just for the record, below are the changes required in the boot libraries -- ie the places where. Not quite as minimal as I'd hoped, but the changes fall into a few standard patterns, and most represent (in my opinion) sytlistic improvements. I will not push these patches, however. == running darcs what -s --repodir libraries/base M ./Control/Arrow.hs -2 +4 M ./Data/Data.hs -7 +22 M ./System/IO/Error.hs +1 M ./Text/ParserCombinators/ReadP.hs +1 == running darcs what -s --repodir libraries/bytestring M ./Data/ByteString/Char8.hs -1 +2 M ./Data/ByteString/Unsafe.hs +1 == running darcs what -s --repodir libraries/Cabal M ./Distribution/PackageDescription.hs -2 +6 M ./Distribution/PackageDescription/Check.hs +3 M ./Distribution/PackageDescription/Configuration.hs -1 +3 M ./Distribution/ParseUtils.hs -2 +4 M ./Distribution/Simple/Command.hs -1 +4 M ./Distribution/Simple/Setup.hs -12 +24 M ./Distribution/Simple/UserHooks.hs -1 +5 == running darcs what -s --repodir libraries/containers M ./Data/IntMap.hs -2 +2 == running darcs what -s --repodir libraries/dph M ./dph-base/Data/Array/Parallel/Arr/BBArr.hs -1 +3 M ./dph-base/Data/Array/Parallel/Arr/BUArr.hs -2 +4 M ./dph-prim-par/Data/Array/Parallel/Unlifted/Distributed/Arrays.hs -6 +10 M ./dph-prim-par/Data/Array/Parallel/Unlifted/Distributed/Combinators.hs -3 +6 M ./dph-prim-seq/Data/Array/Parallel/Unlifted/Sequential/Flat/Permute.hs -2 +4 == running darcs what -s --repodir libraries/syb M ./Data/Generics/Twins.hs -5 +18
-
- 28 May, 2009 2 commits
-
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
See Trac #2953. This patch implements a distinct flag for each extended class that may be automatically derived. And I updated the user manual to reflect the fact that we can now derive Functor, Foldable, Traversable.
-
- 18 May, 2009 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
* 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.
-
- 20 May, 2009 1 commit
-
-
Ian Lynagh authored
-
- 17 May, 2009 1 commit
-
-
Duncan Coutts authored
The previous default was Deployable though it was being overridden to Wrapper in the ghc shell script wrapper.
-
- 20 May, 2009 3 commits
-
-
Ian Lynagh authored
-
Ian Lynagh authored
-
Ian Lynagh authored
-
- 19 May, 2009 1 commit
-
-
rl@cse.unsw.edu.au authored
-
- 01 May, 2009 1 commit
-
-
Duncan Coutts authored
As is already the case for ghc -fPIC. This is needed because ghc -dynamic means to generate code that is capable of being linked to Haskell shared libs and for C code the equivalent is -fPIC. Normally C code does not need -fPIC merely to link to shared libs however Haskell shared libs do not follow common conventions. In particular the static data cannot be referenced statically because it cannot be copied by the static linker. The linker cannot copy them because we do not specify a .size for the _closure entries (in the .data section) though in principle we could.
-
- 09 Apr, 2009 1 commit
-
-
simonpj@microsoft.com authored
This patch sligtly re-adjusts the way in which the syntax of types is handled: * In the lexer, '.' and '*' are always accepted in types (previously it was conditional). This things can't mean anything else in H98, which is the only reason for doing things conditionally in the lexer. * As a result '.' in types is never treated as an operator. Instead, lacking a 'forall' keyword, it turns into a plain parse error. * Test for -XKindSignatures in the renamer when processing a) type variable bindings b) types with sigs (ty :: kind-sig) * Make -XKindSignatures be implied by -XTypeFamilies Previously this was buried in the conditonal lexing of '*'
-
- 02 Apr, 2009 1 commit
-
-
simonpj@microsoft.com authored
This patch changes the compilation pipeline flags so that constants are floated to the top level even in the first full laziness pass. For some reason this was not done before. Fixing this makes a big improvement in 'spectral/rewrite', and has zero effect on any other nofib benchmark.
-
- 18 Mar, 2009 1 commit
-
-
Simon Marlow authored
I'm not sure if this is the correct fix. If targetPlatform is really NCG-specific, then maybe we should call it asmTargetPlatform or something.
-
- 15 Feb, 2009 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
- nativeGen/Instruction defines a type class for a generic instruction set. Each of the instruction sets we have, X86, PPC and SPARC are instances of it. - The register alloctors use this type class when they need info about a certain register or instruction, such as regUsage, mkSpillInstr, mkJumpInstr, patchRegs.. - nativeGen/Platform defines some data types enumerating the architectures and operating systems supported by the native code generator. - DynFlags now keeps track of the current build platform, and the PositionIndependentCode module uses this to decide what to do instead of relying of #ifdefs. - It's not totally retargetable yet. Some info info about the build target is still hardwired, but I've tried to contain most of it to a single module, TargetRegs. - Moved the SPILL and RELOAD instructions into LiveInstr. - Reg and RegClass now have their own modules, and are shared across all architectures.
-
- 02 Feb, 2009 1 commit
-
-
simonpj@microsoft.com authored
This patch is a straightforward extension of the 'deriving' mechanism. The ability to derive classes Functor, Foldable, Traverable is controlled by a single flag -XDeriveFunctor. (Maybe that's a poor name.) Still to come: documentation Thanks to twanvl for developing the patch
-
- 13 Jan, 2009 1 commit
-
-
simonpj@microsoft.com authored
-
- 31 Dec, 2008 2 commits
-
-
simonpj@microsoft.com authored
If you are going for impredicative types you almost certainly want RankN too. The change to TcMType improves the error when you say T (forall a. blah) where T is a type synonym. This doesn't necessarily need impredicativity, if you have LiberalTypeSynonyms.
-
simonpj@microsoft.com authored
See Trac #2846: impredicative types are far from stable, so -fglasgow-exts should not imply them. Maybe we should merge this into 6.10?
-
- 18 Dec, 2008 1 commit
-
-
Ian Lynagh authored
We used to use StaticFlags
-
- 11 Dec, 2008 1 commit
-
-
Ian Lynagh authored
They still need to be stored in IORefs, as the exception handler needs to know what they all are.
-
- 09 Dec, 2008 1 commit
-
-
Ian Lynagh authored
In particular: -fauto-sccs-on-all-toplevs -auto-all -no-auto-all -fauto-sccs-on-exported-toplevs -auto -no-auto -fauto-sccs-on-individual-cafs -caf-all -no-caf-all
-
- 02 Dec, 2008 1 commit
-
-
Thomas Schilling authored
want to use it.
-
- 30 Nov, 2008 1 commit
-
-
Ian Lynagh authored
-
- 28 Nov, 2008 1 commit
-
-
Ian Lynagh authored
-
- 14 Aug, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
This merge does not turn on the new codegen (which only compiles a select few programs at this point), but it does introduce some changes to the old code generator. The high bits: 1. The Rep Swamp patch is finally here. The highlight is that the representation of types at the machine level has changed. Consequently, this patch contains updates across several back ends. 2. The new Stg -> Cmm path is here, although it appears to have a fair number of bugs lurking. 3. Many improvements along the CmmCPSZ path, including: o stack layout o some code for infotables, half of which is right and half wrong o proc-point splitting
-
- 18 Nov, 2008 1 commit
-
-
Simon Marlow authored
Eager blackholing can improve parallel performance by reducing the chances that two threads perform the same computation. However, it has a cost: one extra memory write per thunk entry. To get the best results, any code which may be executed in parallel should be compiled with eager blackholing turned on. But since there's a cost for sequential code, we make it optional and turn it on for the parallel package only. It might be a good idea to compile applications (or modules) with parallel code in with -feager-blackholing. ToDo: document -feager-blackholing.
-
- 13 Nov, 2008 1 commit
-
-
Thomas Schilling authored
Previously, using target HscNothing resulted in unnessesary recompilation because 'upsweep_mod' treated HscInterface specially. This patch changes relaxes this. When running GHC with debug level 5, 'upsweep_mod' will now also be more verbose about what it is doing. There is (at least) one possible remaining problem, though: When using target 'HscNothing' we generate a fake linkable to signal that we have processed a module. When switching to 'HscInterpreted' this may cause objects to not be recompiled. Switching from HscNothing to HscInterpreted is therefore only safe if we unload everything first.
-
- 30 Oct, 2008 1 commit
-
-
simonpj@microsoft.com authored
This patch, written by Max Bolingbroke, does two things 1. It adds a new CoreM monad (defined in simplCore/CoreMonad), which is used as the top-level monad for all the Core-to-Core transformations (starting at SimplCore). It supports * I/O (for debug printing) * Unique supply * Statistics gathering * Access to the HscEnv, RuleBase, Annotations, Module The patch therefore refactors the top "skin" of every Core-to-Core pass, but does not change their functionality. 2. It adds a completely new facility to GHC: Core "annotations". The idea is that you can say {#- ANN foo (Just "Hello") #-} which adds the annotation (Just "Hello") to the top level function foo. These annotations can be looked up in any Core-to-Core pass, and are persisted into interface files. (Hence a Core-to-Core pass can also query the annotations of imported things.) Furthermore, a Core-to-Core pass can add new annotations (eg strictness info) of its own, which can be queried by importing modules. The design of the annotation system is somewhat in flux. It's designed to work with the (upcoming) dynamic plug-ins mechanism, but is meanwhile independently useful. Do not merge to 6.10!
-
- 14 Oct, 2008 1 commit
-
-
Clemens Fruhwirth authored
-
- 01 Oct, 2008 1 commit
-
-
Clemens Fruhwirth authored
-
- 02 Oct, 2008 1 commit
-
-
rl@cse.unsw.edu.au authored
This adds a new flag -finline-if-enough-args which disables inlining for partially applied functions. It is automatically set by -Odph. This is a temporary hack and should remain undocumented. MERGE TO 6.10
-
- 27 Sep, 2008 1 commit
-
-
Simon Marlow authored
-
- 25 Sep, 2008 1 commit
-
-
Bertram Felgenhauer authored
-
- 23 Sep, 2008 1 commit
-
-
Simon Marlow authored
-
- 22 Sep, 2008 1 commit
-
-
Simon Marlow authored
-
- 18 Sep, 2008 2 commits
-
-
pepe authored
- Ticket #1995: Unsoundness with newtypes - Ticket #2475: "Can't unify" error when stopped at an exception In addition this patch adds the following: - Unfailingness: RTTI cannot panic anymore. In case of failure, it recovers gracefully by returning the "I know nothing" type - A -ddump-rtti flag
-
Jedai authored
This patch adds support for raw token streams, that contain more information than normal token streams (they contains comments at least). The "lexTokenStream" function brings this support to the Lexer module. In addition to that, functions have been added to the GHC module to make easier to recover of the token stream of a module ("getTokenStream"). Building on that, I added what could be called "rich token stream": token stream to which have been added the source string corresponding to each token, the function addSourceToToken takes a StringBuffer and a starting SrcLoc and a token stream and build this rich token stream. getRichTokenStream is a convenience function to get a module rich token stream. "showRichTokenStream" use the SrcLoc information in such a token stream to get a string similar to the original source (except unsignificant whitespaces). Thus "putStrLn . showRichTokenStream =<< getRichTokenStream s mod" should print a valid module source, the interesting part being to modify the token stream between the get and the show of course.
-
- 17 Sep, 2008 2 commits
-
-
simonpj@microsoft.com authored
If you say -ddump-xx we effectively add -fforce-recomp, so that you see your dump output. But this works badly in --make mode, because you get the ddump output for every module, which is probably not what you want. This patch forces recompilation with -ddump-X only in one-shot mode. Of course, this only affects people using -ddump options.
-
simonpj@microsoft.com authored
-