Skip to content

Commit 938d442

Browse files
Merge pull request #5806 from MicrosoftDocs/main638945462798230380sync_temp
For protected branch, push strategy should use PR and merge to target branch method to work around git push error
2 parents 3db7fbf + b4471c4 commit 938d442

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

docs/build/reference/fpcvt.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
description: "Learn more about: /fpcvt (Floating-point to integer conversion compatibility)"
33
title: "/fpcvt (Floating-point to unsigned integer conversion compatibility)"
4-
ms.date: 11/03/2021
4+
ms.date: 09/25/2025
55
f1_keywords: ["/fpcvt", "-fpcvt"]
66
helpviewer_keywords: ["-fpcvt compiler option [C++]", "/fpcvt compiler option [C++]"]
77
---
@@ -30,6 +30,8 @@ In Visual Studio 2019 version 16.8 and later versions, the **`/fpcvt`** compiler
3030

3131
For Visual Studio 2019, the default behavior for x64 targets is consistent with **`/fpcvt:BC`** unless **`/arch:AVX512`** is specified. Usually, the behavior for x86 targets is consistent with **`/fpcvt:IA`**, except under **`/arch:IA32`**, **`/arch:SSE`**, or sometimes where the result of a function call is directly converted to an unsigned integer. Use of **`/fpcvt`** overrides the default, so all conversions are handled consistently on either target. The behavior of conversions for ARM and ARM64 targets isn't consistent with either **`/fpcvt:BC`** or **`/fpcvt:IA`**.
3232

33+
Starting with Visual Studio 2022, the default behavior for x64 targets is consistent with `/fpcvt:BC` even when `/arch:AVX512` is specified. To use AVX512 conversion behavior with `/arch:AVX512`, specify `/fpcvt:IA`.
34+
3335
Standard C++ specifies that if a truncated floating-point value is exactly representable in an integer type, it must have that value when converted to that type. Otherwise, any behavior at all is allowed. Both **`/fpcvt`** options conform with Standard C++. The only difference is in what values are returned for invalid source values.
3436

3537
The **`/fpcvt:IA`** option causes any invalid conversion to return a single *sentinel* value, which is the destination value farthest from zero. For conversion to signed types, the sentinel is the minimum value for that type. Unsigned types use the maximum value. Floating-point operations may return a Not-a-Number (NaN) value to indicate an invalid operation. That indicator isn't an option for conversion to integer types, which don't have NaN values. The sentinel is used as a proxy for a NaN value, although it can also be the result of a valid conversion.

docs/sanitizers/asan-building.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,10 @@ The **`/fsanitize=address`** compiler option marks objects to specify which Addr
128128
129129
| CRT option | AddressSanitizer runtime library (.lib) | Address runtime binary (.dll)
130130
|--|--|--|
131-
| `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_static_runtime_thunk-{arch}`* | *`clang_rt.asan_dynamic-{arch}`*
132-
| `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_dynamic_runtime_thunk-{arch}`* | *`clang_rt.asan_dynamic-{arch}`*
131+
| `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_static_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`*
132+
| `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`*
133133

134-
The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error.
134+
The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. The runtime thunk libraries **must** be linked with the `/wholearchive` option applied.
135135

136136
**Previous Versions**
137137

@@ -140,12 +140,12 @@ Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`*
140140

141141
| CRT runtime option | DLL or EXE | AddressSanitizer runtime libraries |
142142
|--|--|--|
143-
| **`/MT`** | EXE | *`clang_rt.asan-{arch}`*, *`clang_rt.asan_cxx-{arch}`* |
144-
| **`/MT`** | DLL | *`clang_rt.asan_dll_thunk-{arch}`* |
145-
| **`/MD`** | Either | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_dynamic_runtime_thunk-{arch}`* |
146-
| **`/MTd`** | EXE | *`clang_rt.asan_dbg-{arch}`*, *`clang_rt.asan_dbg_cxx-{arch}`* |
147-
| **`/MTd`** | DLL | *`clang_rt.asan_dbg_dll_thunk-{arch}`* |
148-
| **`/MDd`** | Either | *`clang_rt.asan_dbg_dynamic-{arch}`*, *`clang_rt.asan_dbg_dynamic_runtime_thunk-{arch}`* |
143+
| **`/MT`** | EXE | *`/wholearchive:clang_rt.asan-{arch}.lib`*, *`clang_rt.asan_cxx-{arch}.lib`* |
144+
| **`/MT`** | DLL | *`/wholearchive:clang_rt.asan_dll_thunk-{arch}.lib`* |
145+
| **`/MD`** | Either | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* |
146+
| **`/MTd`** | EXE | *`/wholearchive:clang_rt.asan_dbg-{arch}.lib`*, *`clang_rt.asan_cxx_dbg-{arch}.lib`* |
147+
| **`/MTd`** | DLL | *`/wholearchive:clang_rt.asan_dbg_dll_thunk-{arch}.lib`* |
148+
| **`/MDd`** | Either | *`/wholearchive:clang_rt.asan_dbg_dynamic-{arch}.lib`*, *`clang_rt.asan_dbg_dynamic_runtime_thunk-{arch}.lib`* |
149149

150150
## Visual Studio integration
151151

0 commit comments

Comments
 (0)