summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/LlvmCodeGen/Base.hs
diff options
context:
space:
mode:
authorGeoffrey Mainland <gmainlan@microsoft.com>2011-11-26 12:45:23 +0000
committerGeoffrey Mainland <gmainlan@microsoft.com>2013-07-08 10:28:37 +0100
commita7a9b85ca19f7f5ac555e855a03cc60154ff185e (patch)
tree9404d4d1e9fa8c87b83dcd18a67c3ec0bd32898d /compiler/llvmGen/LlvmCodeGen/Base.hs
parent7d69e701f4809f4b931b211fa369bd378e38bc27 (diff)
downloadhaskell-a7a9b85ca19f7f5ac555e855a03cc60154ff185e.tar.gz
Fixup stack spills when generating AVX instructions.
LLVM uses aligned AVX moves to spill values onto the stack, which requires 32-bye aligned stacks. Since the stack in only 16-byte aligned, LLVM inserts extra instructions that munge the stack pointer. This is very very bad for the GHC calling convention, so we tell LLVM to assume the stack is 32-byte aligned. This patch rewrites the spill instructions that LLVM generates so they do not require an aligned stack.
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen/Base.hs')
0 files changed, 0 insertions, 0 deletions