summaryrefslogtreecommitdiff
path: root/compiler/codeGen
Commit message (Collapse)AuthorAgeFilesLines
* Pass DynFlags down to showSDocDumpOneLineIan Lynagh2012-06-121-8/+12
|
* Pass DynFlags down to showSDocDebugIan Lynagh2012-06-122-11/+12
|
* Pass DynFlags down to showSDocIan Lynagh2012-06-122-4/+5
|
* Use showPpr in a few more placesIan Lynagh2012-06-121-1/+2
|
* Pass DynFlags down to showSDocDumpIan Lynagh2012-06-121-6/+10
| | | | | To help with this, we now also pass DynFlags around inside the SpecM monad.
* Fix for earger blackholing of thunks with no free variables (#6146)Simon Marlow2012-06-074-12/+16
| | | | | | | | | | | | | | | | | A thunk with no free variables was not getting blackholed when -feager-blackholing was on, but we were nevertheless pushing the stg_bh_upd_frame version of the update frame that expects to see a black hole. I fixed this twice for good measure: - we now call blackHoleOnEntry when pushing the update frame to check whether the closure was actually blackholed, and so that we use the same predicate in both places - we now black hole thunks even if they have no free variables. These only occur when optimisation is off, but presumably if you say -feager-blackholing then that's what you want to happen.
* Merge remote-tracking branch 'origin/unboxed-tuple-arguments2'Paolo Capriotti2012-06-0514-54/+64
|\
| * Support code generation for unboxed-tuple function argumentsunboxed-tuple-arguments2Max Bolingbroke2012-05-1512-47/+61
| | | | | | | | | | | | | | | | | | | | | | This is done by a 'unarisation' pre-pass at the STG level which translates away all (live) binders binding something of unboxed tuple type. This has the following knock-on effects: * The subkind hierarchy is vastly simplified (no UbxTupleKind or ArgKind) * Various relaxed type checks in typechecker, 'foreign import prim' etc * All case binders may be live at the Core level
| * Remove StgTypeArg since it was never used and is probably broken anywayMax Bolingbroke2012-05-152-7/+3
| |
* | 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
| * 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>
* | Merge in more HEAD, fix stuff upSimon Peyton Jones2012-01-238-94/+127
|\ \ | |/
| * 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.
* | 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
|\ \ | |/
| * 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
| |
* | Merge branch 'master' into type-natsIavor S. Diatchki2011-12-294-13/+13
|\ \ | |/ | | | | | | | | Conflicts: compiler/typecheck/TcCanonical.lhs compiler/typecheck/TcSMonad.lhs
| * 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.
| * Fix alignment in the CostCentre struct (#5710)Simon Marlow2011-12-192-9/+9
| |
* | 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.
* 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
|/
* Code generation: Always ask for result of newSparkPeter Wortmann2011-12-052-2/+5
| | | | | | | Otherwise the LLVM backend gets confused over whether its type should be "void (i8*, i8*)" or "i64 (i8*, i8*)". Signed-off-by: David Terei <davidterei@gmail.com>
* Remove dead function.David Terei2011-12-031-23/+1
|
* Merge branch 'master' of http://darcs.haskell.org/ghcIan Lynagh2011-12-022-3/+15
|\
| * More changes aimed at improving call stacks.Simon Marlow2011-12-022-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Attach a SrcSpan to every CostCentre. This had the side effect that CostCentres that used to be merged because they had the same name are now considered distinct; so I had to add a Unique to CostCentre to give them distinct object-code symbols. - New flag: -fprof-auto-calls. This flag adds an automatic SCC to every call site (application, to be precise). This is typically more useful for call stacks than annotating whole functions. Various tidy-ups at the same time: removed unused NoCostCentre constructor, and refactored a bit in Coverage.lhs. The call stack we get from traceStack now looks like this: Stack trace: Main.CAF (<entire-module>) Main.main.xs (callstack002.hs:18:12-24) Main.map (callstack002.hs:13:12-16) Main.map.go (callstack002.hs:15:21-34) Main.map.go (callstack002.hs:15:21-23) Main.f (callstack002.hs:10:7-43)
* | Move includes/DerivedConstants.h and includes/GHCConstants.h into dist dirsIan Lynagh2011-12-024-4/+4
|/ | | | | | | | | | When they existed, they were getting included in the includes_H_FILES variable (as it uses wildcard to find all header files). But the .depends files for the programs that generate the headers depend on $(includes_H_FILES), so the .depends files looked out-of-date once the headers had been created. This caused unnecessary make reinvocations. So now we put them in dist* directories, where they ought to be anyway.
* Further tweaks to the ccs primopsSimon Marlow2011-11-302-2/+16
| | | | | | | | | - add getCCSOf# :: a -> State# s -> (# State# s, Addr# #) (returns the CCS attached to the supplied object) - remove traceCcs# (obsoleted by getCCSOf#) - rename getCCCS# to getCurrentCCS#
* Add a new primop: getCCCS# :: State# s -> (# State# s, Addr# #)Simon Marlow2011-11-292-0/+5
| | | | | Returns a pointer to the current cost-centre stack when profiling, NULL otherwise.