summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * Check the calling convention of foreign imported labels is supportedIan Lynagh2012-05-031-5/+7
| | | | | | | | Fixes 2276_ghci on Win64
| * Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-05-0219-122/+226
| |\
| | * Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-05-024-36/+52
| | |\
| | | * Cast memory primops in the C backend (#5976)Paolo Capriotti2012-05-021-16/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | To prevent conflicts with GCC builtins, generate identical code for calls to mem primos and FFI calls. Based on a patch by Joachim Breitner.
| | * | Allow cases with empty alterantivesSimon Peyton Jones2012-05-0218-106/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows, for the first time, case expressions with an empty list of alternatives. Max suggested the idea, and Trac #6067 showed that it is really quite important. So I've implemented the idea, fixing #6067. Main changes * See Note [Empty case alternatives] in CoreSyn * Various foldr1's become foldrs * IfaceCase does not record the type of the alternatives. I added IfaceECase for empty-alternative cases. * Core Lint does not complain about empty cases * MkCore.castBottomExpr constructs an empty-alternative case expression (case e of ty {}) * CoreToStg converts '(case e of {})' to just 'e'
| * | | Win64 build fixIan Lynagh2012-05-021-2/+3
| | | |
| * | | More Win64 ghci fixesIan Lynagh2012-05-022-0/+162
| | | |
| * | | Win64 Linker improvementsIan Lynagh2012-05-021-4/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We now detect if we are given a value that is out of range for a 32bit relocation, and fail with an error. Added a load more symbols to rtsSyms.
| * | | Add 'free' to the list of rtsSyms on Win64Ian Lynagh2012-05-021-0/+1
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | Without this, we ended up using (gdb) info symbol 0x7ff756a10ac msvcrt!free in section .text of C:\Windows\system32\msvcrt.dll for free, rather than (gdb) info symbol 0x2584128 free in section .text of C:\m64\ghci2\q/../inplace/bin/ghc-stage2.exe but we were trying to put the address into a 32bit relocation.
| * | Fix Win64 build now that hsc2hs knows what platform we're onIan Lynagh2012-05-011-2/+2
| | |
| * | Define _HOST_OS and _HOST_ARCH when calling hsc2hsIan Lynagh2012-05-011-0/+2
| | | | | | | | | | | | | | | | | | In particular, old-time assumes that mingw32_HOST_OS is set when we are on Windows, and was going wrong on Win64 because it wasn't defined.
| * | Tell checkProddableBlock how many bytes we want to writeIan Lynagh2012-05-011-18/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't suffice for checkProddableBlock to just check whether the largest possible write could be made at the address we are writing, as if we are making a smaller write then checkProddableBlock may conservatively think we will write off the end of the block. Thus we now tell checkProddableBlock how many bytes we will write.
| * | Revert "Revert "More Win32 build fixes""Ian Lynagh2012-05-011-27/+27
| | | | | | | | | | | | This reverts commit 29cd6f435f2afb332ad8faf39f5e920ff9c38d9a.
| * | Revert "Revert "Fix build of rts/Linker.c on Win32""Ian Lynagh2012-05-011-22/+28
| | | | | | | | | | | | This reverts commit 02cf6d6f71b5772aa4ddf1b70c192a802886e2c2.
| * | Revert "Revert "Get GHCi working on Win64""Ian Lynagh2012-05-011-35/+116
| | | | | | | | | | | | This reverts commit 27e585bda6ae8ab68f58abdcb9e06806414a6636.
| * | Revert "Get GHCi working on Win64"Manuel M T Chakravarty2012-05-011-116/+35
| | | | | | | | | | | | This reverts commit 05b55c670c7fe3fc01827ca02aafb6926c0b69cb.
| * | Revert "Fix build of rts/Linker.c on Win32"Manuel M T Chakravarty2012-05-011-28/+22
| | | | | | | | | | | | This reverts commit 0042c478f1169ddd9392fb39de7d0aed865a272e.
| * | Revert "More Win32 build fixes"Manuel M T Chakravarty2012-05-011-27/+27
| |/ | | | | | | This reverts commit e89ef70475fa5e9cf17af01b1b5d7fced0d2e13c.
| * Wibble to pretty printingSimon Peyton Jones2012-05-011-3/+1
| |
| * Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-05-014-53/+140
| |\
| | * Fix maintenance of n_blocks in the RTSIan Lynagh2012-05-011-1/+1
| | | | | | | | | | | | | | | | | | | | | It was causing assertion failures of ASSERT(countBlocks(nursery->blocks) == nursery->n_blocks) at ghc-stage2: internal error: ASSERTION FAILED: file rts/sm/Sanity.c, line 878
| | * More Win32 build fixesIan Lynagh2012-04-301-27/+27
| | |
| | * Fixes for x86/LinuxIan Lynagh2012-04-302-5/+5
| | |
| | * Fix the stage1 ghc hschooks.cIan Lynagh2012-04-301-1/+1
| | | | | | | | | | | | | | | The stage0 compiler might have a different idea as to what type lnat corresponds to, so cast the value to the type we want.
| | * Fix build of rts/Linker.c on Win32Ian Lynagh2012-04-301-22/+28
| | |
| | * Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-04-304-15/+89
| | |\
| | * | Get GHCi working on Win64Ian Lynagh2012-04-301-35/+116
| | | |
| * | | Tidy up a remaining glitch in unificationSimon Peyton Jones2012-05-0113-150/+104
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was one place, in type checking parallel list comprehensions where we were unifying types, but had no convenient way to use the resulting coercion; instead we just checked that it was Refl. This was Wrong Wrong; it might fail unpredicably in a GADT-like situation, and it led to extra error-generation code used only in this one place. This patch tidies it all up, by moving the 'return' method from the *comprehension* to the ParStmtBlock. The latter is a new data type, now used for each sub-chunk of a parallel list comprehension. Because of the data type change, quite a few modules are touched, but only in a fairly trivial way. The real changes are in TcMatches (and corresponding desugaring); plus deleting code from TcUnify. This patch also fixes the pretty-printing bug in Trac #6060
| * | Document eta expansion under GHC bugs and infelicitiesSimon Peyton Jones2012-04-301-6/+20
| | |
| * | Egregious typo (fixes Trac #6055)Simon Peyton Jones2012-04-301-1/+1
| | |
| * | Merge branch 'master' of http://darcs.haskell.org//ghcSimon Peyton Jones2012-04-3085-1040/+1254
| |\ \ | | |/
| * | More explicit pretty-printing of promoted TyCons with -dppr-debugSimon Peyton Jones2012-04-301-1/+2
| | |
| * | Make the interface-file deserialisation work right for promoted types (Trac ↵Simon Peyton Jones2012-04-301-7/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #6054) GHC currently uses the slightly-dodgy plan that when we proote a TyCon to be a Kind constructor we leave it with the same Name. That means that to make sense of a IfaceType we need to know wheter it is really an IfaceType or an IfaceKind, because in the latter an occurrence of (say) Maybe will be the *promoted* Maybe. See Note [Checking IfaceTypes vs IfaceKinds] in TcIface
* | | Re-do the "function application discount" (fixes Trac #6048)Simon Peyton Jones2012-05-091-87/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Undoes Max's very aggressive function-inlining change (see comments with Trac #6048) * Resticts function application discount to functions that occur just once in the body. It was the multiple occurrences that led to the exponential behavour in Trac #6048. See Note [Function application discount] in CoreUnfold. Module binary sizes are down 2% on average, which is good. Allocations wobble about a bit, but only on a few benchmarks and not by much, so it seems a price worth paying to avoid exponential behaviour! Allocs Min -1.2% Max +2.8% Geometric Mean +0.0%
* | | Be a little less aggressive about inlining (fixes Trac #5623)Simon Peyton Jones2012-05-094-39/+101
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | When inlining, we are making a copy of the expression, so we have to be careful about duplicating work. Previously we were using exprIsCheap for that, but it is willing to duplicate a cheap primop -- and that is terribly bad if it happens inside some inner array loop (Trac #5623). So now we use a new function exprIsWorkFree. Even then there is some wiggle room: see Note [exprIsWorkFree] in CoreUtils This commit does make wheel-sieve1 allocate a lot more, but we decided that's just tough; it's more important for inlining to be robust about not duplicating work.
* | Revert "Add -faggressive-primops"Simon Peyton Jones2012-04-275-73/+22
| | | | | | | | | | | | This reverts commit 745ec959ff647c3a455767d20f6f37e9a0cc65aa. Sigh. Seg fault
* | Revert "Refactoring in CoreUtils/CoreArity"Simon Peyton Jones2012-04-275-143/+115
| | | | | | | | | | | | This reverts commit e3f8557c2aca04cf64eec6a1aacde6e01c0944ff. Sigh. Seg fault.
* | Revert "Make more primops cheaper"Simon Peyton Jones2012-04-271-2/+0
| | | | | | | | | | | | This reverts commit a365a58eade7cb2c961af8e60c20b7d78b1b7484. Sigh. Seg fault. Major sigh.
* | Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-279-35/+39
|\ \
| * \ Merge branch 'master' of darcs.haskell.org:/home/darcs/ghcSimon Peyton Jones2012-04-2769-743/+979
| |\ \
| * | | Pretty printing and debug improvementsSimon Peyton Jones2012-04-279-35/+39
| | | |
* | | | Make more primops cheaperSimon Peyton Jones2012-04-271-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This puts back the earlier behaviour (pre "aggressive-primop" patch) whereby most primpos were considered cheap. In the aggressive-primop patch we made them ones with bigger "code_size" seem not-cheap, but this slows down fft2 a lot. So I've reverted to the earlier behaviour. +++ b/compiler/prelude/PrimOp.lhs @@ -450,6 +450,8 @@ primOpIsCheap op -- This is vital; see Note [PrimOp can_fail and has_side_effects] && not (primOpOutOfLine op) - -- && primOpCodeSize op <= primOpCodeSizeDefault +-- Omitting; it makes fft2 run a lot slower by preventing +-- eta expansion in an inner loop, with a primop cosDouble#
* | | | Comment out a pprTrace unless DEBUG is on (fix Trac #5929)Simon Peyton Jones2012-04-271-0/+2
| |/ / |/| |
* | | Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-2752-526/+665
|\ \ \
| * \ \ Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-04-2716-348/+411
| |\ \ \
| | * | | hs_init(): cope with argc and/or argv being NULL (#6006)Simon Marlow2012-04-271-1/+8
| | | | |
| | * | | Catch illegal imports earlier (#6007)Simon Marlow2012-04-271-5/+39
| | | | |
| | * | | Add a new primop mkWeakNoFinalizer (#5879)Simon Marlow2012-04-274-5/+19
| | | | |
| | * | | add support for ARM hard-float ABI (fixes #5914)Karel Gardas2012-04-2710-337/+345
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch enhances Platform's ArchARM to include ARM ABI value. It also tweaks configure machinery to detect hard-float ABI and to set it wherever needed. Finally when hard-float ABI is in use, pass appropriate compiler option to the LLVM's llc. Fixes #5914.
| * | | | Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-04-271-2/+3
| |\ \ \ \ | | |/ / /