➜ clang --version
clang version 22.1.8 (https://github.com/llvm/llvm-project ca7933e47d3a3451d81e72ac174dcb5aa28b59d1)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
➜ cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang --fresh ..
-- The C compiler identification is Clang 22.1.8 with GNU-like command-line
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/LLVM/bin/clang.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.55.0.windows.4")
--
-- Architecture: x64
-- Override standard malloc (MI_OVERRIDE=ON)
-- Set debug level to internal assertion and invariant checking (MI_DEBUG=INTERNAL)
--
-- Library name : mimalloc-debug
-- Version : 3.5.0
-- Build type : debug
-- C Compiler : C:/Program Files/LLVM/bin/clang.exe
-- Compiler flags : -Wall;-Wextra;-Wpedantic;-Wno-unknown-pragmas;-fvisibility=hidden;-Wstrict-prototypes;-Wno-static-in-inline;-mno-outline;-ftls-model=initial-exec;-fno-builtin-malloc
-- Compiler defines : MI_GIT_DESCRIBE=v3.5.0;MI_DEBUG=2;MI_CMAKE_BUILD_TYPE=debug
-- Link libraries : psapi;shell32;user32;advapi32;bcrypt
-- Build targets : shared;static;object;tests
--
-- Configuring done (2.2s)
-- Generating done (0.3s)
-- Build files have been written to: D:/dev/mimalloc/out
➜ ninja
[1/56] Building C object CMakeFiles/mimalloc.dir/src/alloc-aligned.c.obj
FAILED: [code=1] CMakeFiles/mimalloc.dir/src/alloc-aligned.c.obj
"C:\Program Files\LLVM\bin\clang.exe" -DMI_CMAKE_BUILD_TYPE=debug -DMI_DEBUG=2 -DMI_GIT_DESCRIBE=v3.5.0 -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -ID:/dev/mimalloc/include -O0 -g -Xclang -gcodeview -std=gnu11 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -fvisibility=hidden -Wstrict-prototypes -Wno-static-in-inline -mno-outline -ftls-model=initial-exec -fno-builtin-malloc -MD -MT CMakeFiles/mimalloc.dir/src/alloc-aligned.c.obj -MF CMakeFiles\mimalloc.dir\src\alloc-aligned.c.obj.d -o CMakeFiles/mimalloc.dir/src/alloc-aligned.c.obj -c D:/dev/mimalloc/src/alloc-aligned.c
In file included from D:/dev/mimalloc/src/alloc-aligned.c:9:
D:/dev/mimalloc/include\mimalloc/internal.h:792:33: error: incompatible pointer types passing 'struct mi_page_s **' to parameter of type 'const uintptr_t *' (aka 'const unsigned long long *') [-Wincompatible-pointer-types]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:75: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^
D:/dev/mimalloc/include\mimalloc\atomic.h:220:75: note: passing argument to parameter 'p' here
220 | static inline uintptr_t mi_atomic_load_explicit(_Atomic(uintptr_t) const* p, mi_memory_order mo) {
| ^
In file included from D:/dev/mimalloc/src/alloc-aligned.c:9:
D:/dev/mimalloc/include\mimalloc/internal.h:792:10: error: incompatible integer to pointer conversion returning 'uintptr_t' (aka 'unsigned long long') from a function with result type 'mi_page_t *' (aka 'struct mi_page_s *') [-Wint-conversion]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:50: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:49:35: note: expanded from macro 'mi_atomic'
49 | #define mi_atomic(name) mi_atomic_##name
| ^
<scratch space>:143:1: note: expanded from here
143 | mi_atomic_load_explicit
| ^
2 errors generated.
[2/56] Building C object CMakeFiles/mimalloc.dir/src/alloc.c.obj
FAILED: [code=1] CMakeFiles/mimalloc.dir/src/alloc.c.obj
"C:\Program Files\LLVM\bin\clang.exe" -DMI_CMAKE_BUILD_TYPE=debug -DMI_DEBUG=2 -DMI_GIT_DESCRIBE=v3.5.0 -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -ID:/dev/mimalloc/include -O0 -g -Xclang -gcodeview -std=gnu11 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -fvisibility=hidden -Wstrict-prototypes -Wno-static-in-inline -mno-outline -ftls-model=initial-exec -fno-builtin-malloc -MD -MT CMakeFiles/mimalloc.dir/src/alloc.c.obj -MF CMakeFiles\mimalloc.dir\src\alloc.c.obj.d -o CMakeFiles/mimalloc.dir/src/alloc.c.obj -c D:/dev/mimalloc/src/alloc.c
In file included from D:/dev/mimalloc/src/alloc.c:13:
D:/dev/mimalloc/include\mimalloc/internal.h:792:33: error: incompatible pointer types passing 'struct mi_page_s **' to parameter of type 'const uintptr_t *' (aka 'const unsigned long long *') [-Wincompatible-pointer-types]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:75: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^
D:/dev/mimalloc/include\mimalloc\atomic.h:220:75: note: passing argument to parameter 'p' here
220 | static inline uintptr_t mi_atomic_load_explicit(_Atomic(uintptr_t) const* p, mi_memory_order mo) {
| ^
In file included from D:/dev/mimalloc/src/alloc.c:13:
D:/dev/mimalloc/include\mimalloc/internal.h:792:10: error: incompatible integer to pointer conversion returning 'uintptr_t' (aka 'unsigned long long') from a function with result type 'mi_page_t *' (aka 'struct mi_page_s *') [-Wint-conversion]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:50: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:49:35: note: expanded from macro 'mi_atomic'
49 | #define mi_atomic(name) mi_atomic_##name
| ^
<scratch space>:143:1: note: expanded from here
143 | mi_atomic_load_explicit
| ^
2 errors generated.
[3/56] Building C object CMakeFiles/mimalloc.dir/src/heap.c.obj
FAILED: [code=1] CMakeFiles/mimalloc.dir/src/heap.c.obj
"C:\Program Files\LLVM\bin\clang.exe" -DMI_CMAKE_BUILD_TYPE=debug -DMI_DEBUG=2 -DMI_GIT_DESCRIBE=v3.5.0 -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -ID:/dev/mimalloc/include -O0 -g -Xclang -gcodeview -std=gnu11 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -fvisibility=hidden -Wstrict-prototypes -Wno-static-in-inline -mno-outline -ftls-model=initial-exec -fno-builtin-malloc -MD -MT CMakeFiles/mimalloc.dir/src/heap.c.obj -MF CMakeFiles\mimalloc.dir\src\heap.c.obj.d -o CMakeFiles/mimalloc.dir/src/heap.c.obj -c D:/dev/mimalloc/src/heap.c
In file included from D:/dev/mimalloc/src/heap.c:9:
D:/dev/mimalloc/include\mimalloc/internal.h:792:33: error: incompatible pointer types passing 'struct mi_page_s **' to parameter of type 'const uintptr_t *' (aka 'const unsigned long long *') [-Wincompatible-pointer-types]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:75: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^
D:/dev/mimalloc/include\mimalloc\atomic.h:220:75: note: passing argument to parameter 'p' here
220 | static inline uintptr_t mi_atomic_load_explicit(_Atomic(uintptr_t) const* p, mi_memory_order mo) {
| ^
In file included from D:/dev/mimalloc/src/heap.c:9:
D:/dev/mimalloc/include\mimalloc/internal.h:792:10: error: incompatible integer to pointer conversion returning 'uintptr_t' (aka 'unsigned long long') from a function with result type 'mi_page_t *' (aka 'struct mi_page_s *') [-Wint-conversion]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:50: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:49:35: note: expanded from macro 'mi_atomic'
49 | #define mi_atomic(name) mi_atomic_##name
| ^
<scratch space>:143:1: note: expanded from here
143 | mi_atomic_load_explicit
| ^
2 errors generated.
[4/56] Building C object CMakeFiles/mimalloc.dir/src/alloc-posix.c.obj
FAILED: [code=1] CMakeFiles/mimalloc.dir/src/alloc-posix.c.obj
"C:\Program Files\LLVM\bin\clang.exe" -DMI_CMAKE_BUILD_TYPE=debug -DMI_DEBUG=2 -DMI_GIT_DESCRIBE=v3.5.0 -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -ID:/dev/mimalloc/include -O0 -g -Xclang -gcodeview -std=gnu11 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -fvisibility=hidden -Wstrict-prototypes -Wno-static-in-inline -mno-outline -ftls-model=initial-exec -fno-builtin-malloc -MD -MT CMakeFiles/mimalloc.dir/src/alloc-posix.c.obj -MF CMakeFiles\mimalloc.dir\src\alloc-posix.c.obj.d -o CMakeFiles/mimalloc.dir/src/alloc-posix.c.obj -c D:/dev/mimalloc/src/alloc-posix.c
In file included from D:/dev/mimalloc/src/alloc-posix.c:13:
D:/dev/mimalloc/include\mimalloc/internal.h:792:33: error: incompatible pointer types passing 'struct mi_page_s **' to parameter of type 'const uintptr_t *' (aka 'const unsigned long long *') [-Wincompatible-pointer-types]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:75: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^
D:/dev/mimalloc/include\mimalloc\atomic.h:220:75: note: passing argument to parameter 'p' here
220 | static inline uintptr_t mi_atomic_load_explicit(_Atomic(uintptr_t) const* p, mi_memory_order mo) {
| ^
In file included from D:/dev/mimalloc/src/alloc-posix.c:13:
D:/dev/mimalloc/include\mimalloc/internal.h:792:10: error: incompatible integer to pointer conversion returning 'uintptr_t' (aka 'unsigned long long') from a function with result type 'mi_page_t *' (aka 'struct mi_page_s *') [-Wint-conversion]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:50: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:49:35: note: expanded from macro 'mi_atomic'
49 | #define mi_atomic(name) mi_atomic_##name
| ^
<scratch space>:143:1: note: expanded from here
143 | mi_atomic_load_explicit
| ^
2 errors generated.
[5/56] Building C object CMakeFiles/mimalloc.dir/src/bitmap.c.obj
FAILED: [code=1] CMakeFiles/mimalloc.dir/src/bitmap.c.obj
"C:\Program Files\LLVM\bin\clang.exe" -DMI_CMAKE_BUILD_TYPE=debug -DMI_DEBUG=2 -DMI_GIT_DESCRIBE=v3.5.0 -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -ID:/dev/mimalloc/include -O0 -g -Xclang -gcodeview -std=gnu11 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -fvisibility=hidden -Wstrict-prototypes -Wno-static-in-inline -mno-outline -ftls-model=initial-exec -fno-builtin-malloc -MD -MT CMakeFiles/mimalloc.dir/src/bitmap.c.obj -MF CMakeFiles\mimalloc.dir\src\bitmap.c.obj.d -o CMakeFiles/mimalloc.dir/src/bitmap.c.obj -c D:/dev/mimalloc/src/bitmap.c
In file included from D:/dev/mimalloc/src/bitmap.c:13:
D:/dev/mimalloc/include\mimalloc/internal.h:792:33: error: incompatible pointer types passing 'struct mi_page_s **' to parameter of type 'const uintptr_t *' (aka 'const unsigned long long *') [-Wincompatible-pointer-types]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:75: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^
D:/dev/mimalloc/include\mimalloc\atomic.h:220:75: note: passing argument to parameter 'p' here
220 | static inline uintptr_t mi_atomic_load_explicit(_Atomic(uintptr_t) const* p, mi_memory_order mo) {
| ^
In file included from D:/dev/mimalloc/src/bitmap.c:13:
D:/dev/mimalloc/include\mimalloc/internal.h:792:10: error: incompatible integer to pointer conversion returning 'uintptr_t' (aka 'unsigned long long') from a function with result type 'mi_page_t *' (aka 'struct mi_page_s *') [-Wint-conversion]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:50: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:49:35: note: expanded from macro 'mi_atomic'
49 | #define mi_atomic(name) mi_atomic_##name
| ^
<scratch space>:143:1: note: expanded from here
143 | mi_atomic_load_explicit
| ^
2 errors generated.
[6/56] Building C object CMakeFiles/mimalloc.dir/src/arena.c.obj
FAILED: [code=1] CMakeFiles/mimalloc.dir/src/arena.c.obj
"C:\Program Files\LLVM\bin\clang.exe" -DMI_CMAKE_BUILD_TYPE=debug -DMI_DEBUG=2 -DMI_GIT_DESCRIBE=v3.5.0 -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS -ID:/dev/mimalloc/include -O0 -g -Xclang -gcodeview -std=gnu11 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -fvisibility=hidden -Wstrict-prototypes -Wno-static-in-inline -mno-outline -ftls-model=initial-exec -fno-builtin-malloc -MD -MT CMakeFiles/mimalloc.dir/src/arena.c.obj -MF CMakeFiles\mimalloc.dir\src\arena.c.obj.d -o CMakeFiles/mimalloc.dir/src/arena.c.obj -c D:/dev/mimalloc/src/arena.c
In file included from D:/dev/mimalloc/src/arena.c:23:
D:/dev/mimalloc/include\mimalloc/internal.h:792:33: error: incompatible pointer types passing 'struct mi_page_s **' to parameter of type 'const uintptr_t *' (aka 'const unsigned long long *') [-Wincompatible-pointer-types]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:75: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^
D:/dev/mimalloc/include\mimalloc\atomic.h:220:75: note: passing argument to parameter 'p' here
220 | static inline uintptr_t mi_atomic_load_explicit(_Atomic(uintptr_t) const* p, mi_memory_order mo) {
| ^
In file included from D:/dev/mimalloc/src/arena.c:23:
D:/dev/mimalloc/include\mimalloc/internal.h:792:10: error: incompatible integer to pointer conversion returning 'uintptr_t' (aka 'unsigned long long') from a function with result type 'mi_page_t *' (aka 'struct mi_page_s *') [-Wint-conversion]
792 | return mi_atomic_load_acquire(&page->self);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:72:50: note: expanded from macro 'mi_atomic_load_acquire'
72 | #define mi_atomic_load_acquire(p) mi_atomic(load_explicit)(p,mi_memory_order(acquire))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/dev/mimalloc/include\mimalloc\atomic.h:49:35: note: expanded from macro 'mi_atomic'
49 | #define mi_atomic(name) mi_atomic_##name
| ^
<scratch space>:143:1: note: expanded from here
143 | mi_atomic_load_explicit
| ^
2 errors generated.
ninja: build stopped: subcommand failed.
I'm unable to build the latest dev3 branch on Windows using Clang with the GNU frontend (clang), rather than clang-cl.
The build fails in both Debug and Release configurations.
Environment
OS: Windows 11 x64
mimalloc: latest dev3 branch
Compiler: Clang 22.1.8
Clang target: x86_64-pc-windows-msvc
Thread model: posix
CMake + Ninja
C standard: GNU11
Build Log