summaryrefslogtreecommitdiff
path: root/compiler/codeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix update frames for profilingSimon Marlow2012-08-072-15/+19
|
* Cleanup and fixes to profilingSimon Marlow2012-08-073-27/+33
|
* A closure with void args only should be a function, not a thunkSimon Marlow2012-08-071-4/+3
|
* Generate one fewer temps per heap allocationSimon Marlow2012-08-074-40/+28
| | | | | This saves compile time and can make a big difference in some pathological cases (T4801)
* Define callerSaves for all platformsIan Lynagh2012-08-075-179/+76
| | | | | | | | This means that we now generate the same code whatever platform we are on, which should help avoid changes on one platform breaking the build on another. It's also another step towards full cross-compilation.
* Add "Unregisterised" as a field in the settings fileIan Lynagh2012-08-0710-67/+91
| | | | | | To explicitly choose whether you want an unregisterised build you now need to use the "--enable-unregisterised"/"--disable-unregisterised" configure flags.
* Make tablesNextToCode "dynamic"Ian Lynagh2012-08-069-85/+90
| | | | | This is a bit odd by itself, but it's a stepping stone on the way to putting "target unregisterised" into the settings file.
* Start separating out the RTS and Haskell imports of MachRegs.hIan Lynagh2012-08-062-2/+2
| | | | No functional differences yet
* Use "ReturnedTo" when generating safe foreign callsSimon Marlow2012-08-064-34/+33
|
* Add a comment to explain why the FCode monad is lazySimon Marlow2012-08-062-1/+9
|
* Explicitly share some return continuationsSimon Marlow2012-08-029-163/+252
| | | | | | | Instead of relying on common-block-elimination to share return continuations in the common case (case-alternative heap checks) we do it explicitly. This isn't hard to do, is more robust, and saves some compilation time. Full commentary in Note [sharing continuations].
* Small optimisation to the code generated for CAFsSimon Marlow2012-07-302-16/+33
|
* New codegen: do not split proc-points when using the NCGSimon Marlow2012-07-306-15/+26
| | | | | | | | | Proc-point splitting is only required by backends that do not support having proc-points within a code block (that is, everything except the native backend, i.e. LLVM and C). Not doing proc-point splitting saves some compilation time, and might produce slightly better code in some cases.
* Make -fscc-profiling a dynamic flagIan Lynagh2012-07-2427-504/+610
| | | | All the flags that 'ways' imply are now dynamic
* Small code simplificationIan Lynagh2012-07-181-4/+2
|
* Whitespace only in CgHeaperyIan Lynagh2012-07-171-249/+242
|
* Make -fPIC a dynamic flagIan Lynagh2012-07-162-17/+18
| | | | | | Hopefully I've kept the logic the same, and we now generate warnings if the user does -fno-PIC but we ignore them (e.g. because they're on OS X amd64).
* Implement FastBytes, and use it for MachStrIan Lynagh2012-07-142-3/+2
| | | | | | | | | | | | | This is a first step on the way to refactoring the FastString type. FastBytes currently has no unique, mainly because there isn't currently a nice way to produce them in Binary. Also, we don't currently do the "Dictionary" thing with FastBytes in Binary. I'm not sure whether this is important. We can change both decisions later, but in the meantime this gets the refactoring underway.
* adjustHpBackwards before calling a let-no-escapeSimon Marlow2012-07-111-1/+2
|
* Support the 2-result primops in the new code generatorSimon Marlow2012-07-112-4/+171
|
* remove some redundant SRT-related stuffSimon Marlow2012-07-116-38/+18
|
* Track liveness of GlobalRegs in the new code generatorSimon Marlow2012-07-092-21/+24
| | | | | | This gives the register allocator access to R1.., F1.., D1.. etc. for the new code generator, and is a cheap way to eliminate all the extra "x = R1" assignments that we get from copyIn.
* Generate slightly less crap to be cleaned up laterSimon Marlow2012-07-062-11/+14
|
* Remove "fuel", adapt to Hoopl changes, fix warningsSimon Marlow2012-07-051-1/+1
|
* Fix merge-related problemsSimon Marlow2012-07-043-4/+5
|
* Merge remote-tracking branch 'origin/master' into newcgSimon Marlow2012-07-0432-258/+460
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * origin/master: (756 commits) don't crash if argv[0] == NULL (#7037) -package P was loading all versions of P in GHCi (#7030) Add a Note, copying text from #2437 improve the --help docs a bit (#7008) Copy Data.HashTable's hashString into our Util module Build fix Build fixes Parse error: suggest brackets and indentation. Don't build the ghc DLL on Windows; works around trac #5987 On Windows, detect if DLLs have too many symbols; trac #5987 Add some more Integer rules; fixes #6111 Fix PA dfun construction with silent superclass args Add silent superclass parameters to the vectoriser Add silent superclass parameters (again) Mention Generic1 in the user's guide Make the GHC API a little more powerful. tweak llvm version warning message New version of the patch for #5461. Fix Word64ToInteger conversion rule. Implemented feature request on reconfigurable pretty-printing in GHCi (#5461) ... Conflicts: compiler/basicTypes/UniqSupply.lhs compiler/cmm/CmmBuildInfoTables.hs compiler/cmm/CmmLint.hs compiler/cmm/CmmOpt.hs compiler/cmm/CmmPipeline.hs compiler/cmm/CmmStackLayout.hs compiler/cmm/MkGraph.hs compiler/cmm/OldPprCmm.hs compiler/codeGen/CodeGen.lhs compiler/codeGen/StgCmm.hs compiler/codeGen/StgCmmBind.hs compiler/codeGen/StgCmmLayout.hs compiler/codeGen/StgCmmUtils.hs compiler/main/CodeOutput.lhs compiler/main/HscMain.hs compiler/nativeGen/AsmCodeGen.lhs compiler/simplStg/SimplStg.lhs
| * Change more uses of sortLe to sortByIan Lynagh2012-06-223-14/+10
| |
| * Fix whitespace in codeGen/StgCmmGran.hsIan Lynagh2012-06-201-32/+25
| |
| * Make -fgransim a dynamic flagIan Lynagh2012-06-201-10/+12
| |
| * Make -fparallel a dynamic flagIan Lynagh2012-06-202-4/+4
| |
| * Fix whitespace in codeGen/CgParallel.hsIan Lynagh2012-06-201-29/+22
| |
| * Remove more redundant Platform argumentsIan Lynagh2012-06-131-1/+1
| |
| * Remove some unnecessary platform argumentsIan Lynagh2012-06-135-31/+18
| |
| * Remove lots of commented out 'in' keywordsIan Lynagh2012-06-132-2/+0
| |
| * Remove PlatformOutputableIan Lynagh2012-06-135-27/+20
| | | | | | | | | | We can now get the Platform from the DynFlags inside an SDoc, so we no longer need to pass the Platform in.
| * 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.