From 52d96367eb41532f628757b38110f21a8daba7ec Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Fri, 15 Sep 2023 20:00:50 +0300
Subject: [PATCH] tidy-up msvc replacement memcpy / memcpy stuff.
---
src/sdl2_compat.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index df5302e..916063f 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -592,24 +592,21 @@ LoadSDL3(void)
return okay;
}
-#ifndef SDL_BUILDING_WINRT
-#if defined(_MSC_VER) && defined(_M_IX86)
+#if defined(_MSC_VER) && !defined(SDL_BUILDING_WINRT)
+#ifdef _M_IX86
#include "x86_msvc.h"
#endif
-#if defined(_WIN32) && !defined(__WATCOMC__)
/* NOLINTNEXTLINE(readability-redundant-declaration) */
extern void *memcpy(void *dst, const void *src, size_t len);
/* NOLINTNEXTLINE(readability-redundant-declaration) */
extern void *memset(void *dst, int c, size_t len);
-#ifdef _MSC_VER
#ifndef __INTEL_LLVM_COMPILER
#pragma intrinsic(memcpy)
#pragma intrinsic(memset)
#endif
#pragma function(memcpy)
#pragma function(memset)
-#endif
/* NOLINTNEXTLINE(readability-inconsistent-declaration-parameter-name) */
void *memcpy(void *dst, const void *src, size_t len)
@@ -622,8 +619,21 @@ void *memset(void *dst, int c, size_t len)
{
return SDL3_memset(dst, c, len);
}
+#endif /* MSVC && !WINRT */
+
+#if defined(__ICL) && defined(_WIN32)
+/* The classic Intel compiler generates calls to _intel_fast_memcpy
+ * and _intel_fast_memset when building an optimized SDL library */
+void *_intel_fast_memcpy(void *dst, const void *src, size_t len)
+{
+ return SDL3_memcpy(dst, src, len);
+}
+
+void *_intel_fast_memset(void *dst, int c, size_t len)
+{
+ return SDL3_memset(dst, c, len);
+}
#endif
-#endif /* ! WINRT */
#ifdef SDL_BUILDING_WINRT
EXTERN_C void error_dialog(const char *errorMsg);