https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a81788e5bfb95e2db22812...
commit a81788e5bfb95e2db22812c268f35a6de59b793f Author: Thomas Faber thomas.faber@reactos.org AuthorDate: Sat Aug 15 21:41:32 2020 +0200 Commit: Thomas Faber thomas.faber@reactos.org CommitDate: Sun Aug 23 12:07:37 2020 +0200
[CMAKE] Explicitly target Pentium for clang. CORE-17202
The MSVC-compatible /arch:IA32 option switches to i386 mode, which makes clang avoid 486/Pentium-specific instructions, e.g. cmpxchg8b. --- sdk/cmake/msvc.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/sdk/cmake/msvc.cmake b/sdk/cmake/msvc.cmake index 0039d71e9de..94847a84167 100644 --- a/sdk/cmake/msvc.cmake +++ b/sdk/cmake/msvc.cmake @@ -51,7 +51,12 @@ endif() # HACK: for VS 11+ we need to explicitly disable SSE, which is off by # default for older compilers. See CORE-6507 if(ARCH STREQUAL "i386") - add_compile_flags("/arch:IA32") + # Clang's IA32 means i386, which doesn't have cmpxchg8b + if(USE_CLANG_CL) + add_compile_flags("-march=${OARCH}") + else() + add_compile_flags("/arch:IA32") + endif() endif()
# VS 12+ requires /FS when used in parallel compilations