InterlockedExchangePointer() guarantees that store operation is done with
memory barrier even without declaring the variable as volatile.
---
mingw-w64-crt/include/msvcrt_or_emu_glue.h | 4 ++--
mingw-w64-crt/stdio/msvcrtos_ftruncate64.c | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/mingw-w64-crt/include/msvcrt_or_emu_glue.h
b/mingw-w64-crt/include/msvcrt_or_emu_glue.h
index ac5834b577b0..da470ce08911 100644
--- a/mingw-w64-crt/include/msvcrt_or_emu_glue.h
+++ b/mingw-w64-crt/include/msvcrt_or_emu_glue.h
@@ -63,7 +63,7 @@ static RETT __cdecl __MINGW64_PASTE(init_,FUNC)(ARGS);
#ifdef NORETURN
__MINGW_ATTRIB_NORETURN
#endif
-RETT (__cdecl *volatile __MINGW_IMP_SYMBOL(FUNC))(ARGS) =
__MINGW64_PASTE(init_,FUNC);
+RETT (__cdecl *__MINGW_IMP_SYMBOL(FUNC))(ARGS) = __MINGW64_PASTE(init_,FUNC);
#ifdef NORETURN
__MINGW_ATTRIB_NORETURN
@@ -82,7 +82,7 @@ static RETT __cdecl __MINGW64_PASTE(init_,FUNC)(ARGS)
if (!func)
func = __MINGW64_PASTE(emu_,FUNC);
- (void)InterlockedExchangePointer((PVOID volatile
*)&__MINGW_IMP_SYMBOL(FUNC), func);
+ (void)InterlockedExchangePointer((PVOID*)&__MINGW_IMP_SYMBOL(FUNC), func);
#ifndef NORETURN
return
diff --git a/mingw-w64-crt/stdio/msvcrtos_ftruncate64.c
b/mingw-w64-crt/stdio/msvcrtos_ftruncate64.c
index 4f7965e741d2..971fb1c4baf1 100644
--- a/mingw-w64-crt/stdio/msvcrtos_ftruncate64.c
+++ b/mingw-w64-crt/stdio/msvcrtos_ftruncate64.c
@@ -21,13 +21,13 @@ int __cdecl ftruncate64(int fd, _off64_t length)
#if defined(__i386__) || defined(__x86_64__)
extern int __cdecl __mingw_ftruncate64(int fd, _off64_t length);
- static errno_t (__cdecl *volatile chsize_s_ptr)(int, __int64);
- static volatile long init = 0;
+ static errno_t (__cdecl *chsize_s_ptr)(int, __int64);
+ static long init = 0;
if (!init) {
HMODULE msvcrt = __mingw_get_msvcrt_handle();
FARPROC func = msvcrt ? GetProcAddress(msvcrt, "_chsize_s") : NULL;
- (void)InterlockedExchangePointer((PVOID volatile *)&chsize_s_ptr,
func);
+ (void)InterlockedExchangePointer((PVOID*)&chsize_s_ptr, func);
(void)InterlockedExchange(&init, 1);
}
--
2.20.1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public