Skip to content

Commit de816fb

Browse files
Merge pull request #5044 from MicrosoftDocs/main638526006593534132sync_temp
For protected branch, push strategy should use PR and merge to target branch method to work around git push error
2 parents af6854d + e69d134 commit de816fb

File tree

7 files changed

+85
-19
lines changed

7 files changed

+85
-19
lines changed

docs/build/reference/arch-arm64.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,52 @@
11
---
22
description: "Learn more about: /arch (ARM64)"
33
title: "/arch (ARM64)"
4-
ms.date: 08/30/2022
4+
ms.date: 05/24/2024
55
---
66
# `/arch` (ARM64)
77

8-
Specifies the architecture for code generation on ARM64. For more information on **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md).
8+
Specifies the Arm A-Profile architecture extension for code generation on ARM64. For more information about **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md).
99

1010
## Syntax
1111

12-
> **`/arch:`**\[**`armv8.0`**-**`armv8.8`**]
12+
>**`/arch:<armv8.0|armv8.1|armv8.2|armv8.3|armv8.4|armv8.5|armv8.6|armv8.7|armv8.8|armv8.9>`**[[+feature]](feature-arm64.md)\
13+
>**`/arch:<armv9.0|armv9.1|armv9.2|armv9.3|armv9.4>`**[[+feature]](feature-arm64.md)
1314
1415
## Arguments
1516

16-
**`/arch:armv8.0`** through **`/arch:armv8.8`**\
17-
Optional. Specifies minimum CPU extension requirements for ARMv8.x-A. The default is **`/arch:armv8.0`**.
17+
**`/arch:armv8.x`**\
18+
Specifies the Armv8-A architecture, where **`x`** is a required extension value from **`0`** to **`9`**<sup>1</sup>. By default, the compiler uses the **`/arch:armv8.0`** behavior if no architecture is specified.
19+
20+
**`/arch:armv9.x`**<sup>2</sup>\
21+
Specifies the Armv9-A architecture, where **`x`** is a required extension value from **`0`** to **`4`**. By default, the compiler uses the **`/arch:armv8.0`** behavior if no architecture is specified.
1822

1923
## Remarks
2024

21-
You may specify a CPU extension requirement from Armv8.0-A through Armv8.8-A. However, depending on your version of Visual Studio, the compiler may not yet generate instructions from all feature sets required by the extension level you specify. For example, **`/arch:armv8.1`** allows the `_Interlocked*` intrinsic functions to use the appropriate atomic instruction that was introduced with the ARMv8.1 extension, FEAT_LSE, but compiler support requires Visual Studio 2022 version 17.2 or later.
25+
You may specify an ARM64 extension from Armv8.0-A through Armv8.9-A, and Armv9.0-A through Armv9.4-A. Optionally, enable one or more architecture features by appending a feature argument to the option<sup>3</sup>. For example, to target Armv8.0-A and enable feature `FEAT_LSE`, append feature argument **`lse`** so that the option becomes **`/arch:armv8.0+lse`**. For more information about available features and their requirements, see [`/feature` (ARM64)](feature-arm64.md)<sup>3</sup>.
26+
27+
> [!NOTE]
28+
> Depending on your version of Visual Studio, the compiler may not yet generate instructions from all feature sets required by the extension level you specify. For example, **`/arch:armv8.1`** allows the `*Interlocked*` intrinsic functions to use the appropriate atomic instruction introduced with the Armv8.1-A extension feature `FEAT_LSE`, but compiler support requires Visual Studio 2022 version 17.2 or later.
2229
2330
The `_M_ARM64` macro is defined by default when compiling for an ARM64 target. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md).
2431

25-
When you use [`/clr`](clr-common-language-runtime-compilation.md) to compile, **`/arch`** has no effect on code generation for managed functions. **`/arch`** only affects code generation for native functions.
32+
**`/arch`** only affects code generation for native functions. When you use [`/clr`](clr-common-language-runtime-compilation.md) to compile, **`/arch`** has no effect on code generation for managed functions.
2633

2734
### To set the `/arch` compiler option in Visual Studio
2835

2936
1. Open the **Property Pages** dialog box for the project. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
3037

3138
1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page.
3239

33-
1. In the **Additional options** box, add *`/arch:armv8.0`* or higher. Choose **OK** to save your changes.
40+
1. In the **Additional options** box, add *`/arch:armv8.0`* or replace `armv8.0` with a different ARM64 extension. Choose **OK** to save your changes.
3441

3542
### To set this compiler option programmatically
3643

3744
- See <xref:Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.AdditionalOptions%2A>.
3845

46+
<sup>1</sup> Armv8-A architecture extension `armv8.9` is available starting in Visual Studio 2022 version 17.10.\
47+
<sup>2</sup> Armv9-A architecture extensions are available starting in Visual Studio 2022 version 17.10.\
48+
<sup>3</sup> Architecture feature enablement is available starting in Visual Studio 2022 version 17.10.
49+
3950
## See also
4051

4152
[`/arch` (Minimum CPU architecture)](arch-minimum-cpu-architecture.md)\

docs/build/reference/compiler-options-listed-alphabetically.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ This table contains an alphabetical list of compiler options. For a list of comp
1616
| [`/?`](help-compiler-command-line-help.md) | Lists the compiler options. |
1717
| [`/AI<dir>`](ai-specify-metadata-directories.md) | Specifies a directory to search to resolve file references passed to the [`#using`](../../preprocessor/hash-using-directive-cpp.md) directive. |
1818
| [`/analyze`](analyze-code-analysis.md) | Enables code analysis. |
19-
| [`/arch:<IA32|SSE|SSE2|AVX|AVX2|AVX512>`](arch-x86.md) | Minimum CPU architecture requirements. IA32, SSE, and SSE2 are x86 only. |
19+
| [`/arch`](arch-minimum-cpu-architecture.md) | Minimum CPU architecture requirements. |
2020
| `/arm64EC` | Generate code compatible with the arm64EC ABI. |
2121
| [`/await`](await-enable-coroutine-support.md) | Enable coroutines (resumable functions) extensions. |
2222
| [`/await:strict`](await-enable-coroutine-support.md) | Enable standard C++20 coroutine support with earlier language versions. |
@@ -65,6 +65,7 @@ This table contains an alphabetical list of compiler options. For a list of comp
6565
| [`/FC`](fc-full-path-of-source-code-file-in-diagnostics.md) | Displays the full path of source code files passed to *cl.exe* in diagnostic text. |
6666
| [`/Fd`](fd-program-database-file-name.md) | Renames program database file. |
6767
| [`/Fe`](fe-name-exe-file.md) | Renames the executable file. |
68+
| [`/feature`](feature-arm64.md) | Enable architecture features.<sup>17.10</sup> |
6869
| [`/FI<file>`](fi-name-forced-include-file.md) | Preprocesses the specified include file. |
6970
| [`/Fi`](fi-preprocess-output-file-name.md) | Specifies the preprocessed output file name. |
7071
| [`/Fm`](fm-name-mapfile.md) | Creates a mapfile. |
@@ -257,6 +258,8 @@ This table contains an alphabetical list of compiler options. For a list of comp
257258
| [`/Zs`](zs-syntax-check-only.md) | Checks syntax only. |
258259
| [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. |
259260

261+
<sup>17.10</sup> This option is available starting in Visual Studio 2022 version 17.10.
262+
260263
## See also
261264

262265
[MSVC compiler options](compiler-options.md)\

docs/build/reference/compiler-options-listed-by-category.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ This article contains a categorical list of compiler options. For an alphabetica
2828

2929
| Option | Purpose |
3030
|--|--|
31-
| [`/arch:<IA32|SSE|SSE2|AVX|AVX2|AVX512>`](arch-x86.md) | Minimum CPU architecture requirements. IA32, SSE, and SSE2 are x86 only. |
31+
| [`/arch`](arch-minimum-cpu-architecture.md) | Minimum CPU architecture requirements. |
3232
| [`/clr`](clr-common-language-runtime-compilation.md) | Produces an output file to run on the common language runtime. |
3333
| [`/clr:implicitKeepAlive-`](clr-common-language-runtime-compilation.md) | Turn off implicit emission of `System::GC::KeepAlive(this)`. |
3434
| [`/clr:initialAppDomain`](clr-common-language-runtime-compilation.md) | Enable initial AppDomain behavior of Visual C++ 2002. |
@@ -42,6 +42,7 @@ This article contains a categorical list of compiler options. For an alphabetica
4242
| [`/EHc`](eh-exception-handling-model.md) | `extern "C"` defaults to `nothrow`. |
4343
| [`/EHr`](eh-exception-handling-model.md) | Always generate `noexcept` runtime termination checks. |
4444
| [`/EHs`](eh-exception-handling-model.md) | Enable C++ exception handling (no SEH exceptions). |
45+
| [`/feature`](feature-arm64.md) | Enable architecture features.<sup>17.10</sup> |
4546
| [`/fp:contract`](fp-specify-floating-point-behavior.md) | Consider floating-point contractions when generating code. |
4647
| [`/fp:except[-]`](fp-specify-floating-point-behavior.md) | Consider floating-point exceptions when generating code. |
4748
| [`/fp:fast`](fp-specify-floating-point-behavior.md) | "fast" floating-point model; results are less predictable. |
@@ -325,6 +326,8 @@ Experimental options may only be supported by certain versions of the compiler.
325326
| [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables language extensions. |
326327
| [`/Zg`](zg-generate-function-prototypes.md) | Removed in Visual Studio 2015. Generates function prototypes. |
327328

329+
<sup>17.10</sup> This option is available starting in Visual Studio 2022 version 17.10.
330+
328331
## See also
329332

330333
[C/C++ building reference](c-cpp-building-reference.md)\

docs/build/reference/feature-arm64.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
description: "Learn more about: /feature (ARM64)"
3+
title: "/feature (ARM64)"
4+
ms.date: 05/28/2024
5+
---
6+
# `/feature` (ARM64)
7+
8+
Enable one or more Arm A-Profile architecture features for an ARM64 extension as specified by **`/arch`** (ARM64). For more information about **`/arch`** (ARM64), see [`/arch` (ARM64)](arch-arm64.md).
9+
10+
## Syntax
11+
12+
> **`/feature:<arg1>`**[**`+arg2`**]
13+
14+
## Arguments
15+
To enable one or more features the targeted ARM64 extension supports, specify one or more of the following feature arguments:
16+
17+
| Feature argument | Feature identifier | Optional from | Enabled by default | Description |
18+
|--|--|--|--|--|
19+
|**`lse`** | `FEAT_LSE` | Armv8.0 | Armv8.1 | Large System Extensions. |
20+
|**`rcpc`** | `FEAT_LRCPC` | Armv8.2 | Armv8.3 | Load-Acquire RCpc instructions. |
21+
22+
## Remarks
23+
24+
Example usage: to enable `FEAT_LSE`, specify **`/feature:lse`**.
25+
26+
If there are conflicting feature arguments specified by **`/feature`**, the right-most feature is enabled. Enabling a feature the targeted ARM64 extension doesn't support may cause unexpected behavior, especially if a CPU doesn't implement the feature.
27+
28+
Use either **`/feature`** or only **`/arch`** (ARM64) to specify features. For example, to enable `FEAT_LSE` when targeting Armv8.0-A, use both **`/feature:lse`** and **`/arch:armv8.0`**, or specify **`/arch:armv8.0+lse`**. **`/feature`** is a way to specify features without specifying them in **`/arch`** (ARM64).
29+
30+
### To set the `/feature` compiler option in Visual Studio
31+
32+
1. Open the **Property Pages** dialog box for the project. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
33+
34+
1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page.
35+
36+
1. In the **Additional options** box, add *`/feature:lse`* or replace `lse` with the feature to enable. Choose **OK** to save your changes.
37+
38+
### To set this compiler option programmatically
39+
40+
- See <xref:Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.AdditionalOptions%2A>.
41+
42+
## See also
43+
44+
[`/arch` (Minimum CPU architecture)](arch-minimum-cpu-architecture.md)\
45+
[MSVC compiler options](compiler-options.md)\
46+
[MSVC compiler command-line syntax](compiler-command-line-syntax.md)

docs/build/reference/headerunit.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "/headerUnit (Use header unit IFC)"
33
description: "Use the /headerUnit compiler option to associate a header file with the header unit to import in its place."
4-
ms.date: 02/01/2022
4+
ms.date: 5/28/2024
55
f1_keywords: ["/headerUnit"]
66
helpviewer_keywords: ["/headerUnit", "Use header unit IFC"]
77
author: "tylermsft"
@@ -14,8 +14,8 @@ Imports a header unit. Tells the compiler where to find the *`.ifc`* file (the b
1414
## Syntax
1515

1616
> **`/headerUnit`** *`header-filename`*=*`ifc-filename`*\
17-
> **`/headerUnit:quote`** \[*`header-filename`*=*`ifc-filename`*\]\
18-
> **`/headerUnit:angle`** \[*`header-filename`*=*`ifc-filename`*\]
17+
> **`/headerUnit:quote`** *`header-filename`*=*`ifc-filename`*\
18+
> **`/headerUnit:angle`** *`header-filename`*=*`ifc-filename`*
1919
2020
### Arguments
2121

@@ -39,7 +39,7 @@ When the compiler comes across `import "file";` or `import <file>;` this compile
3939

4040
- **`/headerUnit:angle`** looks up the compiled header unit file using the same rules as `#include <file>`.
4141

42-
The compiler can't map a single *`header-name`* to multiple *`.ifc`* files. Mapping multiple *`header-name`* arguments to a single *`.ifc`* is possible, but it isn't recommended. The contents of the *`.ifc`* are imported as if it was only the header specified by *`header-name`*.
42+
The compiler can't map a single *`header-name`* to multiple *`.ifc`* files. You can map multiple *`header-name`* arguments to a single *`.ifc`*. The contents of the *`.ifc`* are imported as if it was only the header specified by *`header-name`*.
4343

4444
The compiler implicitly enables the new preprocessor when this option is used. If any form of `/headerUnit` is specified on the command line, then [`/Zc:preprocessor`](zc-preprocessor.md) is added to the command line by the compiler. To opt out of the implicit `/Zc:preprocessor`, specify: `/Zc:preprocessor-`
4545

docs/build/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,8 @@ items:
560560
href: ../build/reference/favor-optimize-for-architecture-specifics.md
561561
- name: /FC (Full path of source code file in diagnostics)
562562
href: ../build/reference/fc-full-path-of-source-code-file-in-diagnostics.md
563+
- name: /feature (Enable architecture features)
564+
href: ../build/reference/feature-arm64.md
563565
- name: /fp (Specify floating-point behavior)
564566
href: ../build/reference/fp-specify-floating-point-behavior.md
565567
- name: /fpcvt (Floating-point to unsigned integer conversion behavior)

docs/windows/latest-supported-vc-redist.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Latest supported Visual C++ Redistributable downloads"
33
description: "This article lists the download links for the latest versions of Visual C++ Redistributable packages."
4-
ms.date: 02/26/2024
4+
ms.date: 5/28/2024
55
helpviewer_keywords:
66
[
77
"redist",
@@ -28,7 +28,8 @@ This table lists the latest supported English (en-US) Microsoft Visual C++ Redis
2828
Unlike older versions of Visual Studio, which have infrequent redist updates, the version number isn't listed in the following table for Visual Studio 2015-2022 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist.
2929

3030
## Latest Microsoft Visual C++ Redistributable Version
31-
The latest version is `14.38.33135.0`
31+
32+
The latest version is `14.40.33810.0`
3233

3334
Use the following links to download this version for each supported architecture:
3435

@@ -44,17 +45,17 @@ Download other versions, including long term servicing release channel (LTSC) ve
4445

4546
- The Visual C++ Redistributable for Visual Studio 2015-2022 doesn't have separate packages for different languages. It contains EULAs for all supported languages.
4647

47-
- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the **No account? Create one!** link.
48+
- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the **No account? Create one!** link.
4849

4950
- Visual Studio versions since Visual Studio 2015 share the same Redistributable files. For example, any apps built by the Visual Studio 2015, 2017, 2019, or 2022 toolsets can use the latest Microsoft Visual C++ Redistributable. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md).
5051

5152
- **Windows XP Support**: Microsoft ended support for Windows XP on April 8, 2014. Current versions of the Visual C++ Redistributable for Visual Studio 2015-2022 only support Windows 7, 8.1, 10, and 11. The last version of the Visual C++ Redistributable that works on Windows XP shipped in Visual Studio 2019 version 16.7 (file versions starting with **14.27**). The Redistributable is available in the [my.visualstudio.com Downloads](https://my.visualstudio.com/Downloads/) section as **Visual C++ Redistributable for Visual Studio 2019 (version 16.7)**. Use the Search box to find this version. To download the files, select the platform and language you need, and then choose the **Download** button.
5253

5354
- The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages).
5455

55-
## Visual Studio 2013 (VC++ 12.0)
56+
## Visual Studio 2013 (VC++ 12.0) (no longer supported)
5657

57-
These links download the latest supported en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013.
58+
These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013.
5859
You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from [my.visualstudio.com](https://my.visualstudio.com/).
5960

6061
| Architecture | Version | Link |

0 commit comments

Comments
 (0)