0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.0.2186: LTCG compile error ARM64 for write_chars

Problem:  LTCG compile error on Win/ARM64 for `write_chars()`
Solution: Explicitly initialise the storage to use data rather than BSS
          (Saleem Abdulrasool)

win32: add a workaround for a LTCG issue on Windows ARM64

It appears that the implicit initialisation which would push `g_coords`
into BSS causes an aliasing issue with LTCG on ARM64.  By explicitly
initialising the value, we use usual data storage but prevent the
aliasing.  This allows the console version of VIM to run on Windows
ARM64 again.

fixes:  #13453
closes: #13775

Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Saleem Abdulrasool 2023-12-27 18:57:12 +01:00 committed by Christian Brabandt
parent 65672ae118
commit 38bea30f53
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
2 changed files with 6 additions and 1 deletions

View File

@ -156,7 +156,10 @@ static HANDLE g_hConOut = INVALID_HANDLE_VALUE;
// Win32 Screen buffer,coordinate,console I/O information
static SMALL_RECT g_srScrollRegion;
static COORD g_coord; // 0-based, but external coords are 1-based
// This is explicitly initialised to work around a LTCG issue on Windows ARM64
// (at least of 19.39.33321). This pushes this into the `.data` rather than
// `.bss` which corrects code generation in `write_chars` (#13453).
static COORD g_coord = {0, 0}; // 0-based, but external coords are 1-based
// The attribute of the screen when the editor was started
static WORD g_attrDefault = 7; // lightgray text on black background

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2186,
/**/
2185,
/**/