patch 9.0.2186: LTCG compile error ARM64 for write_chars

Commit: 
https://github.com/vim/vim/commit/38bea30f53da8e4a8847407404597b255b20334e
Author: Saleem Abdulrasool <[email protected]>
Date:   Wed Dec 27 18:57:12 2023 +0100

    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 <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/src/os_win32.c b/src/os_win32.c
index 2bf0fe712..e5cfac729 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -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
diff --git a/src/version.c b/src/version.c
index 986b17438..5446a5264 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2186,
 /**/
     2185,
 /**/

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1rIYQp-00GpNv-RO%40256bit.org.

Raspunde prin e-mail lui