summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorklebinger.andreas@gmx.at <klebinger.andreas@gmx.at>2018-01-31 21:39:19 -0500
committerBen Gamari <ben@smart-cactus.org>2018-01-31 23:29:30 -0500
commitadd4e1f11b88cd603f6c01bc135eb576e1922a8e (patch)
tree78f3a89dedf01891c350b6a53bc013551ee66340 /includes
parent382c12d18f3d64e01502a5c8bbc64d4aa4842e3e (diff)
downloadhaskell-add4e1f11b88cd603f6c01bc135eb576e1922a8e.tar.gz
Mark xmm6 as caller saved in the register allocator for windows.
This prevents the register being picked up as a scratch register. Otherwise the allocator would be free to use it before a call. This fixes #14619. Test Plan: ci, repro case on #14619 Reviewers: bgamari, Phyx, erikd, simonmar, RyanGlScott, simonpj Reviewed By: Phyx, RyanGlScott, simonpj Subscribers: simonpj, RyanGlScott, Phyx, rwbarton, thomie, carter GHC Trac Issues: #14619 Differential Revision: https://phabricator.haskell.org/D4348
Diffstat (limited to 'includes')
-rw-r--r--includes/rts/Constants.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/includes/rts/Constants.h b/includes/rts/Constants.h
index 27097bf45b..5774bd7a0e 100644
--- a/includes/rts/Constants.h
+++ b/includes/rts/Constants.h
@@ -113,11 +113,15 @@
/* -----------------------------------------------------------------------------
How large is the stack frame saved by StgRun?
world. Used in StgCRun.c.
+
+ The size has to be enough to save the registers (see StgCRun)
+ plus padding if the result is not 16 byte aligned.
+ See the Note [Stack Alignment on X86] in StgCRun.c for details.
+
-------------------------------------------------------------------------- */
#if defined(x86_64_HOST_ARCH)
# if defined(mingw32_HOST_OS)
-/* 8 larger than necessary to make the alignment right*/
-# define STG_RUN_STACK_FRAME_SIZE 80
+# define STG_RUN_STACK_FRAME_SIZE 144
# else
# define STG_RUN_STACK_FRAME_SIZE 48
# endif