summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@mariadb.com>2021-11-11 22:12:12 +0100
committerVladislav Vaintroub <wlad@mariadb.com>2021-11-12 00:32:39 +0100
commit5b21a8fafca80596afb905496dbe0fc8f790624c (patch)
tree804d0cd1162882ddf6f66b242a64799054285b7c
parent9c18b9660302a76a6ff9bd505888048a13586a4c (diff)
downloadmariadb-git-5b21a8fafca80596afb905496dbe0fc8f790624c.tar.gz
MDEV-27030 vcol.vcol_keys_myisam fails on Windows x64, with Visual Studio 2022
Upon investigation, decided this to be a compiler bug (happens with new compiler, on code that did not change for the last 15 years) Fixed by de-optimizing single function remove_key(), using MSVC pragma
-rw-r--r--storage/myisam/mi_delete.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/storage/myisam/mi_delete.c b/storage/myisam/mi_delete.c
index 2c829fa9860..62409a15a46 100644
--- a/storage/myisam/mi_delete.c
+++ b/storage/myisam/mi_delete.c
@@ -767,6 +767,10 @@ err:
returns how many chars was removed or 0 on error
*/
+#if defined(_MSC_VER) && defined(_M_X64) && _MSC_VER >= 1930
+#pragma optimize("g", off)
+#endif
+
static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag,
uchar *keypos, /* Where key starts */
uchar *lastkey, /* key to be removed */
@@ -891,3 +895,7 @@ static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag,
(uint) (page_end-start-s_length));
DBUG_RETURN((uint) s_length);
} /* remove_key */
+
+#if defined(_MSC_VER) && defined(_M_X64) && _MSC_VER >= 1930
+#pragma optimize("",on)
+#endif