summaryrefslogtreecommitdiff
path: root/compiler/codeGen
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Change how macros like ASSERT are definedIan Lynagh2012-06-059-1/+9
| | | | | | | | | | | | | | | By using Haskell's debugIsOn rather than CPP's "#ifdef DEBUG", we don't need to kludge things to keep the warning checker happy etc.
| * | Add a setByteArray# primopIan Lynagh2012-05-282-2/+30
| |/ | | | | | | Essentially, this is a wrapper around memset
| * Add a quotRemWord2 primopIan Lynagh2012-04-211-0/+53
| | | | | | | | | | | | | | | | It allows you to do (high, low) `quotRem` d provided high < d. Currently only has an inefficient fallback implementation.
| * Merge remote-tracking branch 'origin/master' into type-natsIavor S. Diatchki2012-03-135-9/+121
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: compiler/coreSyn/CoreLint.lhs compiler/deSugar/DsBinds.lhs compiler/hsSyn/HsTypes.lhs compiler/iface/IfaceType.lhs compiler/rename/RnHsSyn.lhs compiler/rename/RnTypes.lhs compiler/stgSyn/StgLint.lhs compiler/typecheck/TcHsType.lhs compiler/utils/ListSetOps.lhs
| | * Fix the unregisterised build; fixes #5901Ian Lynagh2012-02-272-13/+6
| | |
| | * Implement "value" imports with the CAPIIan Lynagh2012-02-262-2/+6
| | | | | | | | | | | | | | | | | | This allows us to import values (i.e. non-functions) with the CAPI. This means we can access values even if (on some or all platforms) they are simple #defines.
| | * Fix generic 2-word-multiplyIan Lynagh2012-02-241-3/+3
| | |
| | * Add a 2-word-multiply operatorIan Lynagh2012-02-241-0/+48
| | | | | | | | | | | | Currently no NCGs support it
| | * Add a Word add-with-carry primopIan Lynagh2012-02-232-8/+58
| | | | | | | | | | | | No special-casing in any NCGs yet
| | * Add a primop for unsigned quotRem; part of #5598Ian Lynagh2012-02-171-0/+8
| | | | | | | | | | | | Only amd64 has an efficient implementation currently.
| | * Define a quotRem CallishMachOp; fixes #5598Ian Lynagh2012-02-141-0/+9
| | | | | | | | | | | | | | | This means we no longer do a division twice when we are using quotRem (on platforms on which the op is supported; currently only amd64).
| * | Add support for type-level "strings".Iavor S. Diatchki2012-01-242-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are types that look like "this" and "that". They are of kind `Symbol`, defined in module `GHC.TypeLits`. For each type-level symbol `X`, we have a singleton type, `TSymbol X`. The value of the singleton type can be named with the overloaded constant `tSymbol`. Here is an example: tSymbol :: TSymbol "Hello"
| * | Merge remote-tracking branch 'origin/master' into type-natsIavor S. Diatchki2012-01-241-2/+22
| |\ \ | | |/ | | | | | | | | | Conflicts: compiler/typecheck/TcEvidence.lhs
| * | Merge in more HEAD, fix stuff upSimon Peyton Jones2012-01-238-94/+127
| |\ \
| * | | Mainly, rename LiteralTy to LitTySimon Peyton Jones2012-01-132-2/+2
| | | |
| * | | Merge remote-tracking branch 'origin/master' into type-natsIavor S. Diatchki2012-01-0714-1145/+1088
| |\ \ \
| * \ \ \ Merge branch 'master' into type-natsIavor S. Diatchki2011-12-294-13/+13
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: compiler/typecheck/TcCanonical.lhs compiler/typecheck/TcSMonad.lhs
| * | | | | Extend GHC's type with a representation for type level literals.Iavor S. Diatchki2011-12-182-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, we support only numeric literals but---hopefully---these modifications should make it fairly easy to add other ones, if necessary.
* | | | | | Improve the case-alternative heap checksSimon Marlow2012-03-072-32/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code we were generating for heap-checks in algebraic case alternatives wasn't working well with the common-block eliminator. A small tweak to make the heap-check failure jump back to the same place in all branches lets the common-block eliminator squash more code.
* | | | | | fix the updfr offset in the jump after newCAFSimon Marlow2012-03-071-1/+2
| | | | | |
* | | | | | Lower safe foreign calls in the new CmmLayoutStackSimon Marlow2012-03-065-93/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We also generate much better code for safe foreign calls (and maybe also unsafe foreign calls) than previously. See the two new Notes: Note [lower safe foreign calls] Note [safe foreign call convention]
* | | | | | New codegen: fix bad code for comparisons (see Note [case on bool])Simon Marlow2012-02-152-44/+79
| | | | | |
* | | | | | Merge remote-tracking branch 'laptop/newcg' into newcgMe at work2012-02-1417-1225/+1223
|\ \ \ \ \ \
| * | | | | | merge fixesSimon Marlow2012-02-131-45/+1
| | | | | | |
| * | | | | | Merge remote-tracking branch 'origin/master' into newcgSimon Marlow2012-02-1317-1216/+1258
| |\ \ \ \ \ \ | | | |_|_|_|/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: compiler/cmm/CmmLint.hs compiler/cmm/OldCmm.hs compiler/codeGen/CgMonad.lhs compiler/main/CodeOutput.lhs
| | * | | | | Port "Add new primtypes 'ArrayArray#' and 'MutableArrayArray#'" to new codegen.Edward Z. Yang2012-01-201-2/+22
| | | |_|_|/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 021a0dd265ff34c1e292813c06185eff1d6b5c1c appears to have only partially added the new primops associated with ArrayArray# and MutableArrayArray# Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
| | * | | | Track STG live register information for use in LLVMDavid Terei2012-01-098-94/+127
| | | |_|/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now carry around with CmmJump statements a list of the STG registers that are live at that jump site. This is used by the LLVM backend so it can avoid unnesecarily passing around dead registers, improving perfromance. This gives us the framework to finally fix trac #4308.
| | * | | Remove unused arg field of CmmReturnDavid Terei2012-01-051-1/+1
| | | | |
| | * | | Remove unused argument field on CmmJumpDavid Terei2012-01-057-13/+13
| | | | |
| | * | | Formatting fixesDavid Terei2012-01-054-526/+508
| | | | |
| | * | | Tabs -> Spaces + formatting fixesDavid Terei2012-01-052-596/+559
| | | | |
| | * | | Fixup to 4464c92badaedc45ce53d6349f6790f6d2298103Simon Marlow2012-01-052-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of enterLocalIdLabel we should get the label from the ClosureInfo, because that knows better whether the label should be local or not. Needed by #5357
| | * | | Rename the CCCS field of StgTSO so as not to conflict with the CCCS ↵Simon Marlow2012-01-052-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pseudo-register Needed by #5357
| | * | | remove dead codeSimon Marlow2012-01-041-6/+1
| | | | |
| | * | | mkSlowEntryCode: enterLocalIdLabel should be enterIdLabel (#5357)Simon Marlow2012-01-041-1/+1
| | | |/ | | |/|
| | * | Add a class HasDynFlags(getDynFlags)Ian Lynagh2011-12-192-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We no longer have many separate, clashing getDynFlags functions I've given each GhcMonad its own HasDynFlags instance, rather than using UndecidableInstances to make a GhcMonad m => HasDynFlags m instance.
* | | | tiny refactoringSimon Marlow2012-02-141-1/+1
| | | |
* | | | Fix an SRT-related bugSimon Marlow2012-02-146-73/+48
|/ / / | | | | | | | | | | | | | | | | | | | | | We were using the SRT information generated by the computeSRTs pass to decide whether to add a static link field to a constructor or not, and this broke when I disabled computeSRTs for the new code generator. So I've hacked it for now to only rely on the SRT information generated by CoreToStg.
* | | fix a bugSimon Marlow2012-02-081-2/+2
| | |
* | | New stack layout algorithmSimon Marlow2012-02-088-73/+222
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also: - improvements to code generation: push slow-call continuations on the stack instead of generating explicit continuations - remove unused CmmInfo wrapper type (replace with CmmInfoTable) - squash Area and AreaId together, remove now-unused RegSlot - comment out old unused stack-allocation code that no longer compiles after removal of RegSlot
* | | Make the old codegen run in constant space tooSimon Marlow2012-01-272-29/+41
| | |
* | | Don't call computeSRTs when -fnew-codegen is onSimon Marlow2012-01-271-1/+1
| | |
* | | Run the complete backend (Stg -> .S) incrementally on each StgBindingSimon Marlow2012-01-262-88/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is so that we can process the Stg code in constant space. Before we were generating all the C-- up front, leading to a large space leak. I haven't converted the LLVM or C back ends to the incremental scheme, but it's not hard to do.
* | | small refactorSimon Marlow2012-01-251-5/+6
| | |
* | | Different implementation of MkGraphSimon Marlow2012-01-2510-189/+281
|/ /
* | Fix alignment in the CostCentre struct (#5710)Simon Marlow2011-12-192-9/+9
|/
* Fix comment in CgMonadDavid Terei2011-12-111-6/+5
|
* Merge branch 'master' of http://darcs.haskell.org/ghcDavid Terei2011-12-082-4/+34
|\
| * Add new primtypes 'ArrayArray#' and 'MutableArrayArray#'Manuel M T Chakravarty2011-12-072-4/+34
| | | | | | | | | | | | | | | | The primitive array types, such as 'ByteArray#', have kind #, but are represented by pointers. They are boxed, but unpointed types (i.e., they cannot be 'undefined'). The two categories of array types —[Mutable]Array# and [Mutable]ByteArray#— are containers for unboxed (and unpointed) as well as for boxed and pointed types. So far, we lacked support for containers for boxed, unpointed types (i.e., containers for the primitive arrays themselves). This is what the new primtypes provide. Containers for boxed, unpointed types are crucial for the efficient implementation of scattered nested arrays, which are central to the new DPH backend library dph-lifted-vseg. Without such containers, we cannot eliminate all unboxing from the inner loops of traversals processing scattered nested arrays.
* | Tabs -> Spaces + FormattingDavid Terei2011-12-062-436/+402
|/