diff options
author | klebinger.andreas@gmx.at <klebinger.andreas@gmx.at> | 2018-01-31 21:39:19 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-01-31 23:29:30 -0500 |
commit | add4e1f11b88cd603f6c01bc135eb576e1922a8e (patch) | |
tree | 78f3a89dedf01891c350b6a53bc013551ee66340 /includes | |
parent | 382c12d18f3d64e01502a5c8bbc64d4aa4842e3e (diff) | |
download | haskell-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.h | 8 |
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 |