[PATCH] D59607: libc++/win: Make once_flag have the same size as a pointer
Eric Fiselier via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 20 12:50:01 PDT 2019
EricWF requested changes to this revision.
EricWF added a comment.
This revision now requires changes to proceed.
Can you add a description of why this is a problem on Windows?
================
Comment at: libcxx/include/mutex:583
- unsigned long __state_;
+ uintptr_t __state_;
----------------
Because this change is ABI breaking and can't be done unconditionally, I would create a typedef `_StateType` that's `uintptr_t` on Windows and `unsigned long` everywhere else.
================
Comment at: libcxx/include/mutex:653
-_LIBCPP_FUNC_VIS void __call_once(volatile unsigned long&, void*, void(*)(void*));
+_LIBCPP_FUNC_VIS void __call_once(volatile uintptr_t&, void*, void(*)(void*));
----------------
This change is ABI breaking because `uintptr_t` isn't always `unsigned long`. On 32 bit platforms it may be `unsigned int`, which mangles differently.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59607/new/
https://reviews.llvm.org/D59607
More information about the llvm-commits
mailing list