[commit: ghc] master: Teach the linear register allocator how to allocate more stack if necessary (0b0a41f)
Simon Marlow
marlowsd at gmail.com
Thu Sep 20 15:51:11 CEST 2012
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/0b0a41f96cbdaf52aac171c9c58459e3187b0f46
>---------------------------------------------------------------
commit 0b0a41f96cbdaf52aac171c9c58459e3187b0f46
Author: Simon Marlow <marlowsd at gmail.com>
Date: Thu Sep 20 13:54:49 2012 +0100
Teach the linear register allocator how to allocate more stack if necessary
This squashes the "out of spill slots" panic that occasionally happens
on x86, by adding instructions to bump and retreat the C stack pointer
as necessary. The panic has become more common since the new codegen,
because we lump code into larger blocks, and the register allocator
isn't very good at reusing stack slots for spilling (see Note [extra
spill slots]).
compiler/nativeGen/AsmCodeGen.lhs | 70 ++++++++++----
compiler/nativeGen/Instruction.hs | 13 +++
compiler/nativeGen/PPC/Instr.hs | 2 +
compiler/nativeGen/RegAlloc/Linear/Main.hs | 25 ++++-
compiler/nativeGen/RegAlloc/Linear/StackMap.hs | 36 +++-----
compiler/nativeGen/SPARC/Instr.hs | 2 +
compiler/nativeGen/X86/Instr.hs | 117 ++++++++++++++++++------
compiler/nativeGen/X86/Regs.hs | 6 +-
8 files changed, 189 insertions(+), 82 deletions(-)
Diff suppressed because of size. To see it, use:
git show 0b0a41f96cbdaf52aac171c9c58459e3187b0f46
More information about the Cvs-ghc
mailing list