[compiler-rt] [compiler-rt][ASan] Work around msvc cl x64 build warnings (PR #156887)

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 4 09:17:20 PDT 2025


================
@@ -108,7 +108,8 @@ set(ASAN_CFLAGS ${SANITIZER_COMMON_CFLAGS})
 
 # Win/ASan relies on the runtime functions being hotpatchable. See
 # https://github.com/llvm/llvm-project/pull/149444
-if(MSVC)
+# MSVC cl 64 bit architectures treat /hotpatch as an unknown option
+if(CLANG_CL OR (MSVC AND "i386" IN_LIST ASAN_SUPPORTED_ARCH))
----------------
zmodem wrote:

Those are the ones I meant: https://github.com/llvm/llvm-project/blob/b2ff3e780a0995d4ffdc96db948ef3cd7e9c2695/compiler-rt/lib/asan/CMakeLists.txt#L121-L124

I don't think they work, i.e. the `/experimental:external` flags get passed also when using clang-cl, and cause warnings, e.g. from https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket/8704672462688910449/+/u/package_clang/stdout

```
 [112/349] Building CXX object compiler-rt\lib\asan\CMakeFiles\RTAsan_dynamic.x86_64.dir\asan_debugging.cpp.obj
 clang-cl: warning: argument unused during compilation: '/experimental:external' [-Wunused-command-line-argument]
 clang-cl: warning: argument unused during compilation: '/external:anglebrackets' [-Wunused-command-line-argument]
```

I think maybe the `CLANG_CL` check used to work when building with `-DLLVM_ENABLE_PROJECTS=compiler-rt` but not in the new "runtimes build" using `-DLLVM_ENABLE_RUNTIMES=compiler-rt` but that's just me speculating.

https://github.com/llvm/llvm-project/pull/156887


More information about the llvm-commits mailing list