summaryrefslogtreecommitdiff
path: root/compiler/utils/GraphOps.hs
Commit message (Collapse)AuthorAgeFilesLines
* Fix warnings in utils/GraphOps.hsIan Lynagh2012-02-261-7/+31
|
* Whitespace only in utils/GraphOps.hsIan Lynagh2012-02-261-433/+432
|
* Use -fwarn-tabs when validatingIan Lynagh2011-11-041-0/+7
| | | | | We only use it for "compiler" sources, i.e. not for libraries. Many modules have a -fno-warn-tabs kludge for now.
* Add adjustUFM, adjustUFM_Directly and joinUFM to UniqFM.Edward Z. Yang2011-04-131-7/+8
| | | | | | | Renamed adjustUFM in GraphOps to adjustUFM_C, to account for alternate argument order. Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
* NCG: Don't worry about trying to re-freeze missing coalescencesbenl@ouroborus.net2010-07-021-5/+4
|
* Split Reg into vreg/hreg and add register pairsBen.Lippmeier@anu.edu.au2009-05-181-1/+9
| | | | | | | | | | | | | * 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.
* Fix #3170: Allow coalescing of the same node during register allocation.Ben.Lippmeier@anu.edu.au2009-04-181-3/+3
| | | | | | The x86 code generator sometimes generates nop moves like movl %vI_a %vI_a, but we'll just ignore them for coalescing purposes instead of emitting an error. It shouldn't hurt anything.
* Fixes for haddock 0.8Ian Lynagh2008-07-211-2/+2
|
* Make some more modules use LazyUniqFM instead of UniqFMIan Lynagh2008-02-071-1/+1
| | | | | If these modules use UniqFM then we get a stack overflow when compiling modules that use fundeps. I haven't tracked down the actual cause.
* Make some more modules use LazyUniqFM instead of UniqFMIan Lynagh2008-02-071-1/+1
| | | | | If these modules use UniqFM then we get a stack overflow when compiling modules that use fundeps. I haven't tracked down the actual cause.
* Move OPTIONS pragmas above commentsIan Lynagh2007-09-211-1/+1
| | | | Fixes building with -Werror (i.e. validate) and GHC < 6.6
* Tune coalescing in non-iterative register allocatorBen.Lippmeier@anu.edu.au2007-09-171-2/+0
| | | | | | | | | | | If iterative coalescing isn't turned on, then do a single aggressive coalescing pass for the first build/color cycle and then back off to conservative coalescing for subseqent passes. Aggressive coalescing is a cheap way to eliminate lots of the reg-reg moves, but it can make the graph less colorable - if we turn it on for every pass then allocation for code with a large amount of register pressure (ie SHA1) doesn't converge in a sensible number of cycles.
* Bugfix to iterative coalescerBen.Lippmeier@anu.edu.au2007-09-171-3/+5
| | | | | | Coalescences must be applied to the unsimplified graph in the same order they were found by the iterative coalescing algorithm - otherwise the vreg rewrite mapping will be wrong and badness will ensue.
* Add -dasm-lintBen.Lippmeier@anu.edu.au2007-09-171-18/+64
| | | | | | | | When -dasm-lint is turned on the register conflict graph is checked for internal consistency after each build/color pass. Make sure that all edges point to valid nodes, that nodes are colored differently to their neighbours, and if the graph is supposed to be colored, that all nodes actually have a color.
* move generic graph-colouring code into utilSimon Marlow2007-09-121-0/+581
It is needed by cmm/StackColor, and hence is needed even when there is no native code generator.