diff --git a/CMakeLists.txt b/CMakeLists.txt index fe1cf099d0..dbf13adf38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 4.3.1) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) project(msvc_standard_libraries LANGUAGES CXX) -set(expected_msvc_compiler_version "19.52.36629") +set(expected_msvc_compiler_version "19.52.36725") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS expected_msvc_compiler_version) message(FATAL_ERROR "The STL must be built with MSVC Compiler ${expected_msvc_compiler_version} or later. Follow the README instructions.") endif() diff --git a/azure-devops/asan-pipeline.yml b/azure-devops/asan-pipeline.yml index 985520ff41..3a30757da2 100644 --- a/azure-devops/asan-pipeline.yml +++ b/azure-devops/asan-pipeline.yml @@ -20,15 +20,16 @@ stages: displayName: 'Test x64 ASan' dependsOn: [] pool: - name: ${{ variables.x64SlowPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64SlowPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: build-and-test.yml parameters: + jobTimeoutInMinutes: 20 hostArch: x64 targetArch: x64 targetPlatform: x64 @@ -39,15 +40,16 @@ stages: displayName: 'Test x86 ASan' dependsOn: [] pool: - name: ${{ variables.x64SlowPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64SlowPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: build-and-test.yml parameters: + jobTimeoutInMinutes: 20 hostArch: x86 targetArch: x86 targetPlatform: x86 @@ -67,6 +69,7 @@ stages: jobs: - template: build-and-test.yml parameters: + jobTimeoutInMinutes: 25 hostArch: arm64 targetArch: arm64 targetPlatform: arm64 diff --git a/azure-devops/build-and-test.yml b/azure-devops/build-and-test.yml index c37891ffe6..2909ddfb5b 100644 --- a/azure-devops/build-and-test.yml +++ b/azure-devops/build-and-test.yml @@ -2,6 +2,8 @@ # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception parameters: +- name: jobTimeoutInMinutes + type: string - name: hostArch type: string - name: targetArch @@ -39,7 +41,7 @@ jobs: - job: '${{ parameters.targetPlatform }}' strategy: parallel: ${{ parameters.numShards }} - timeoutInMinutes: 30 + timeoutInMinutes: ${{ parameters.jobTimeoutInMinutes }} steps: - template: checkout-self.yml - template: checkout-submodule.yml diff --git a/azure-devops/build-benchmarks.yml b/azure-devops/build-benchmarks.yml index b0734bb2b4..6a0a79e568 100644 --- a/azure-devops/build-benchmarks.yml +++ b/azure-devops/build-benchmarks.yml @@ -31,7 +31,6 @@ steps: -DSTL_BINARY_DIR="$(buildOutputLocation)" ` -DVCLIBS_TARGET_ARCHITECTURE=${{ parameters.targetPlatform }} ` -S $(Build.SourcesDirectory)/benchmarks -B "$(benchmarkBuildOutputLocation)\${{ parameters.compiler }}" - timeoutInMinutes: 2 env: { TMP: $(tmpDir), TEMP: $(tmpDir) } # TRANSITION, we currently only build the benchmarks with Clang for x64 condition: > @@ -47,7 +46,6 @@ steps: $PSNativeCommandUseErrorActionPreference = $true & "$(launchVsDevShell)" -Preview -NoLogo -HostArch ${{ parameters.hostArch }} -Arch ${{ parameters.targetArch }} cmake --build "$(benchmarkBuildOutputLocation)\${{ parameters.compiler }}" - timeoutInMinutes: 2 env: { TMP: $(tmpDir), TEMP: $(tmpDir) } # TRANSITION, we currently only build the benchmarks with Clang for x64 condition: > diff --git a/azure-devops/cmake-configure-build.yml b/azure-devops/cmake-configure-build.yml index 8f324caa0f..1402b216cb 100644 --- a/azure-devops/cmake-configure-build.yml +++ b/azure-devops/cmake-configure-build.yml @@ -48,7 +48,6 @@ steps: -DTESTS_BUILD_ONLY=${{ parameters.testsBuildOnly }} ` -DVCLIBS_TARGET_ARCHITECTURE=${{ parameters.targetPlatform }} ` -S $(Build.SourcesDirectory) -B "$(buildOutputLocation)" - timeoutInMinutes: 2 env: { TMP: $(tmpDir), TEMP: $(tmpDir) } - task: PowerShell@2 displayName: 'Build STL' @@ -59,6 +58,5 @@ steps: $PSNativeCommandUseErrorActionPreference = $true & "$(launchVsDevShell)" -Preview -NoLogo -HostArch ${{ parameters.hostArch }} -Arch ${{ parameters.targetArch }} cmake --build "$(buildOutputLocation)" - timeoutInMinutes: 5 condition: and(succeeded(), ${{ parameters.buildStl }}) env: { TMP: $(tmpDir), TEMP: $(tmpDir) } diff --git a/azure-devops/config.yml b/azure-devops/config.yml index 27be969b45..c73e107afe 100644 --- a/azure-devops/config.yml +++ b/azure-devops/config.yml @@ -4,17 +4,11 @@ # Common configuration used by both pipelines variables: -- name: x64SlowPoolName - value: 'Stl-2026-08-25T2113-x64-Fasv6-Pool' - readonly: true -- name: x64MediumPoolName - value: 'Stl-2026-08-25T2113-x64-Fasv7-Pool' - readonly: true -- name: x64FastPoolName - value: 'Stl-2026-08-25T2113-x64-Fadsv7-Pool' +- name: x64PoolName + value: 'Stl-2026-09-08T1422-x64-Fadsv7-Pool' readonly: true - name: arm64PoolName - value: 'Stl-2026-08-25T2113-arm64-Dpdsv6-Pool' + value: 'Stl-2026-09-08T1422-arm64-Dpdsv6-Pool' readonly: true - name: poolDemands value: 'EnableSpotVM -equals false' @@ -22,16 +16,8 @@ variables: - name: launchVsDevShell value: 'C:\Program Files\Microsoft Visual Studio\18\Insiders\Common7\Tools\Launch-VsDevShell.ps1' readonly: true -# The x64 SKU Fasv6 doesn't have local temporary storage, so it must use 'C:'. -- name: x64SlowPoolWorkRoot - value: 'C:' - readonly: true -# The x64 SKU Fasv7 doesn't have local temporary storage, so it must use 'C:'. -- name: x64MediumPoolWorkRoot - value: 'C:' - readonly: true # The x64 SKU Fadsv7 has local temporary storage, available as 'N:' (for NVMe). -- name: x64FastPoolWorkRoot +- name: x64PoolWorkRoot value: 'N:' readonly: true # The arm64 SKU Dpdsv6 has local temporary storage, available as 'E:'. diff --git a/azure-devops/create-1es-hosted-pool.ps1 b/azure-devops/create-1es-hosted-pool.ps1 index a7c36e195c..b3c75849aa 100644 --- a/azure-devops/create-1es-hosted-pool.ps1 +++ b/azure-devops/create-1es-hosted-pool.ps1 @@ -9,14 +9,15 @@ Creates a 1ES Hosted Pool, set up for the STL's CI. See https://github.com/microsoft/STL/wiki/Checklist-for-Toolset-Updates for more information. .PARAMETER VMSku -The VM SKU can be Fasv6, Fasv7, Fadsv7, or Dpdsv6. +The VM SKU can be Fadsv7 or Dpdsv6. #> [CmdletBinding(PositionalBinding=$false)] Param( - [Parameter(Mandatory)][ValidateSet('Fasv6', 'Fasv7', 'Fadsv7', 'Dpdsv6')][String]$VMSku + [Parameter(Mandatory)][ValidateSet('Fadsv7', 'Dpdsv6')][String]$VMSku ) $ErrorActionPreference = 'Stop' +$PSNativeCommandUseErrorActionPreference = $true $CurrentDate = Get-Date $Timestamp = $CurrentDate.ToString('yyyy-MM-ddTHHmm') @@ -31,41 +32,28 @@ $Timestamp = $CurrentDate.ToString('yyyy-MM-ddTHHmm') # | SKU | Location | Cores | Notes # |--------|----------------|------:|------- -# | Fasv6 | eastus2 | 4096 | -# | Fasv7 | australiaeast | 740 | Currently unused to stay within our regional (all-SKU) quota of 4736 cores -# | Fasv7 | northeurope | 640 | -# | Fasv7 | southeastasia | 640 | -# | Fadsv7 | australiaeast | 2048 | +# | Fadsv7 | australiaeast | 3024 | +# | Fadsv7 | swedencentral | 2560 | # | Dpdsv6 | australiaeast | 2048 | # | Dpdsv6 | southcentralus | 2048 | -if ($VMSku -ieq 'Fasv6') { - $Arch = 'x64' - $ProtoVMSize = 'Standard_F16as_v6' - $PoolSkuName = 'Standard_F64as_v6' - $PoolSize = 32 # We have quota for 4096 cores (64 VMs), so we can have old and new pools of 32 VMs each. - $AvailableLocations = @('eastus2') -} elseif ($VMSku -ieq 'Fasv7') { - $Arch = 'x64' - $ProtoVMSize = 'Standard_F16as_v7' - $PoolSkuName = 'Standard_F48as_v7' - $PoolSize = 13 # Locations where we have quota for at least 640 cores (13 VMs): - $AvailableLocations = @('northeurope', 'southeastasia') -} elseif ($VMSku -ieq 'Fadsv7') { +if ($VMSku -ieq 'Fadsv7') { $Arch = 'x64' + $DiskType = 'NVMe' $ProtoVMSize = 'Standard_F16ads_v7' - $PoolSkuName = 'Standard_F48ads_v7' - $PoolSize = 21 # We have quota for 2048 cores (42 VMs), so we can have old and new pools of 21 VMs each. - $AvailableLocations = @('australiaeast') + $PoolSkuName = 'Standard_F80ads_v7' + $PoolSize = 32 # Locations where we have quota for at least 2560 cores (32 VMs): + $AvailableLocations = @('australiaeast', 'swedencentral') } elseif ($VMSku -ieq 'Dpdsv6') { $Arch = 'arm64' + $DiskType = 'SCSI' $ProtoVMSize = 'Standard_D16pds_v6' $PoolSkuName = 'Standard_D64pds_v6' $PoolSize = 32 # Locations where we have quota for at least 2048 cores (32 VMs): $AvailableLocations = @('australiaeast', 'southcentralus') } -$AvailableLocationIdx = 14 # Increment for each new set of pools, to cycle through the available locations. +$AvailableLocationIdx = 15 # Increment for each new set of pools, to cycle through the available locations. $Location = $AvailableLocations[$AvailableLocationIdx % $AvailableLocations.Length] if ($Arch -ieq 'x64') { @@ -232,13 +220,13 @@ if ($Arch -ieq 'x64') { $VM = New-AzVMConfig ` -VMName $ProtoVMName ` -VMSize $ProtoVMSize ` - -DiskControllerType 'NVMe' ` + -DiskControllerType $DiskType ` -Priority 'Regular' } else { $VM = New-AzVMConfig ` -VMName $ProtoVMName ` -VMSize $ProtoVMSize ` - -DiskControllerType 'SCSI' ` + -DiskControllerType $DiskType ` -Priority 'Regular' ` -SecurityType 'TrustedLaunch' ` -SharedGalleryImageId $ImageId @@ -386,7 +374,7 @@ Display-ProgressBar -Status 'Creating image definition' $ImageDefinitionName = "$ResourceGroupName-ImageDefinition" $FeatureTrustedLaunch = @{ Name = 'SecurityType'; Value = 'TrustedLaunch'; } -if ($Arch -ieq 'x64') { +if ($DiskType -ieq 'NVMe') { $FeatureNVMe = @{ Name = 'DiskControllerTypes'; Value = 'SCSI, NVMe'; } } else { $FeatureNVMe = @{ Name = 'DiskControllerTypes'; Value = 'SCSI'; } diff --git a/azure-devops/format-validation.yml b/azure-devops/format-validation.yml index 33ffbc1e55..da6cef9761 100644 --- a/azure-devops/format-validation.yml +++ b/azure-devops/format-validation.yml @@ -22,29 +22,27 @@ jobs: & "$(launchVsDevShell)" -Preview -NoLogo -HostArch x64 -Arch x64 cmake -G Ninja -S $(Build.SourcesDirectory)/tools -B "$(validationBuildOutputLocation)" cmake --build "$(validationBuildOutputLocation)" - timeoutInMinutes: 5 env: { TMP: $(tmpDir), TEMP: $(tmpDir) } - task: PowerShell@2 - displayName: 'clang-format Files' + displayName: 'Validate Files' inputs: pwsh: true targetType: inline script: | $PSNativeCommandUseErrorActionPreference = $true & "$(launchVsDevShell)" -Preview -NoLogo -HostArch x64 -Arch x64 - cmake --build "$(validationBuildOutputLocation)" --target run-format - timeoutInMinutes: 5 + cmake --build "$(validationBuildOutputLocation)" --target run-validate env: { TMP: $(tmpDir), TEMP: $(tmpDir) } + # We need to validate files before running clang-format, which modifies them in-place. - task: PowerShell@2 - displayName: 'Validate Files' + displayName: 'clang-format Files' inputs: pwsh: true targetType: inline script: | $PSNativeCommandUseErrorActionPreference = $true & "$(launchVsDevShell)" -Preview -NoLogo -HostArch x64 -Arch x64 - cmake --build "$(validationBuildOutputLocation)" --target run-validate - timeoutInMinutes: 2 + cmake --build "$(validationBuildOutputLocation)" --target run-format env: { TMP: $(tmpDir), TEMP: $(tmpDir) } - task: PowerShell@2 displayName: 'Create Diff' diff --git a/azure-devops/provision-image.ps1 b/azure-devops/provision-image.ps1 index 1ecb4d106c..86c716c2c9 100644 --- a/azure-devops/provision-image.ps1 +++ b/azure-devops/provision-image.ps1 @@ -59,9 +59,9 @@ foreach ($workload in $VisualStudioWorkloads) { # https://github.com/PowerShell/PowerShell/releases/latest if ($Provisioning_x64) { - $PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.5/PowerShell-7.6.5-win-x64.msi' + $PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.6/PowerShell-7.6.6-win-x64.msi' } else { - $PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.5/PowerShell-7.6.5-win-arm64.msi' + $PowerShellUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.6/PowerShell-7.6.6-win-arm64.msi' } $PowerShellArgs = @('/quiet', '/norestart') @@ -111,7 +111,10 @@ Function DownloadAndInstall { mkdir $tempPath -Force | Out-Null $fileName = [uri]::new($Url).Segments[-1] $installerPath = Join-Path $tempPath $fileName - curl.exe -L -o $installerPath -s -S $Url + curl.exe --fail --silent --show-error --location --output $installerPath $Url + if ($LASTEXITCODE -ne 0) { + Write-Error "curl.exe failed with non-zero exit code $LASTEXITCODE." + } Write-Host "Installing $Name..." $proc = Start-Process -FilePath $installerPath -ArgumentList $Args -Wait -PassThru diff --git a/azure-devops/run-tests.yml b/azure-devops/run-tests.yml index 9db612463f..e08543547f 100644 --- a/azure-devops/run-tests.yml +++ b/azure-devops/run-tests.yml @@ -23,12 +23,11 @@ steps: $PSNativeCommandUseErrorActionPreference = $true & "$(launchVsDevShell)" -Preview -NoLogo -HostArch ${{ parameters.hostArch }} -Arch ${{ parameters.targetArch }} ninja --verbose -k 0 ${{ parameters.testTargets }} - timeoutInMinutes: 30 + timeoutInMinutes: 15 condition: and(succeeded(), ${{ parameters.runTesting }}) env: { TMP: $(tmpDir), TEMP: $(tmpDir) } - task: PublishTestResults@2 displayName: 'Publish Tests' - timeoutInMinutes: 5 condition: and(succeededOrFailed(), ${{ parameters.runTesting }}) inputs: searchFolder: $(buildOutputLocation) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1979b1b2cd..a6d2683d8d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -15,11 +15,11 @@ stages: dependsOn: [] displayName: 'Code Format' pool: - name: ${{ variables.x64MediumPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64MediumPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: azure-devops/format-validation.yml @@ -28,15 +28,16 @@ stages: dependsOn: [] displayName: 'Build x64' pool: - name: ${{ variables.x64MediumPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64MediumPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 6 hostArch: x64 targetArch: x64 targetPlatform: x64 @@ -50,15 +51,16 @@ stages: dependsOn: [] displayName: 'Build x86' pool: - name: ${{ variables.x64MediumPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64MediumPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 6 hostArch: x86 targetArch: x86 targetPlatform: x86 @@ -81,6 +83,7 @@ stages: jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 9 hostArch: arm64 targetArch: arm64 targetPlatform: arm64 @@ -103,6 +106,7 @@ stages: jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 9 hostArch: arm64 targetArch: arm64 targetPlatform: arm64ec @@ -116,15 +120,16 @@ stages: dependsOn: [] displayName: 'Configure Tests' pool: - name: ${{ variables.x64MediumPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64MediumPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 5 hostArch: x64 targetArch: x64 targetPlatform: x64 @@ -143,15 +148,16 @@ stages: - Configure_Tests displayName: 'Test x64' pool: - name: ${{ variables.x64FastPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64FastPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 15 hostArch: x64 targetArch: x64 targetPlatform: x64 @@ -175,6 +181,7 @@ stages: jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 20 hostArch: arm64 targetArch: arm64 targetPlatform: arm64 @@ -186,15 +193,16 @@ stages: - Test_ARM64 displayName: 'Test x86' pool: - name: ${{ variables.x64SlowPoolName }} + name: ${{ variables.x64PoolName }} demands: ${{ variables.poolDemands }} variables: - name: workRoot - value: '$(x64SlowPoolWorkRoot)' + value: '$(x64PoolWorkRoot)' readonly: true jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 15 hostArch: x86 targetArch: x86 targetPlatform: x86 @@ -214,6 +222,7 @@ stages: jobs: - template: azure-devops/build-and-test.yml parameters: + jobTimeoutInMinutes: 20 hostArch: arm64 targetArch: arm64 targetPlatform: arm64ec diff --git a/stl/inc/__msvc_doom_core.hpp b/stl/inc/__msvc_doom_core.hpp index 1300f8081c..08b90323c7 100644 --- a/stl/inc/__msvc_doom_core.hpp +++ b/stl/inc/__msvc_doom_core.hpp @@ -40,9 +40,7 @@ _STL_DISABLE_CLANG_WARNINGS #define _MSVC_STL_DOOM_FUNCTION(mesg) ::_invoke_watson(nullptr, nullptr, nullptr, 0, 0) #else // Use the MSVC __fastfail intrinsic: extern "C" __declspec(noreturn) void __fastfail(unsigned int); // declared by -#define _MSVC_STL_DOOM_FUNCTION(mesg) \ - __fastfail(5); /* __fastfail(FAST_FAIL_INVALID_ARG), value defined by */ \ - _STL_UNREACHABLE /* TRANSITION, DevCom-10914110 */ +#define _MSVC_STL_DOOM_FUNCTION(mesg) __fastfail(5); /* __fastfail(FAST_FAIL_INVALID_ARG), value in */ #endif // choose "doom function" #endif // ^^^ !defined(_MSVC_STL_DOOM_FUNCTION) ^^^ diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index b037883504..c8d3f67d2d 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -789,8 +789,8 @@ // copy/move constructors and copy/move assignment operators are not trivial (/Wall) // warning C5246: 'member': the initialization of a subobject should be wrapped in braces (/Wall) // warning C5278: adding a specialization for 'type trait' has undefined behavior -// warning C5280: a static operator '()' requires at least '/std:c++23preview' -// warning C5281: a static lambda requires at least '/std:c++23preview' +// warning C5280: a static operator '()' requires at least '/std:c++23' +// warning C5281: a static lambda requires at least '/std:c++23' // warning C5285: cannot declare a specialization for 'meow' // warning C5291: 'DERIVED': deriving from the base class 'BASE' can cause potential runtime issues // due to an ABI bug. Recommend adding a 4-byte data member to the base class diff --git a/tests/libcxx/expected_results.txt b/tests/libcxx/expected_results.txt index 07c7bffe06..68e9d9f6fd 100644 --- a/tests/libcxx/expected_results.txt +++ b/tests/libcxx/expected_results.txt @@ -61,6 +61,16 @@ std/containers/sequences/vector/trivial_relocation.pass.cpp:1 FAIL # LLVM-182397: [libc++][test] rand.dist.bern.negbin/eval.pass.cpp constructs with p == 1, which has undefined behavior std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.negbin/eval.pass.cpp FAIL +# LLVM-222431: [libcxx][test] `signaling_NaN()` should not be used in `constexpr ` tests +std/numerics/c.math/isgreater.pass.cpp:0 FAIL +std/numerics/c.math/isgreater.pass.cpp:1 FAIL +std/numerics/c.math/isgreaterequal.pass.cpp:0 FAIL +std/numerics/c.math/isgreaterequal.pass.cpp:1 FAIL +std/numerics/c.math/islessequal.pass.cpp:0 FAIL +std/numerics/c.math/islessequal.pass.cpp:1 FAIL +std/numerics/c.math/isunordered.pass.cpp:0 FAIL +std/numerics/c.math/isunordered.pass.cpp:1 FAIL + # Non-Standard regex behavior. # "It seems likely that the test is still non-conforming due to how libc++ handles the 'w' character class." std/re/re.traits/lookup_classname.pass.cpp FAIL @@ -244,21 +254,10 @@ std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_m std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_fetch_min.pass.cpp FAIL # P0533R9 constexpr For And -std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp FAIL -std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp FAIL -std/numerics/c.math/fpclassify.pass.cpp FAIL -std/numerics/c.math/isgreater.pass.cpp:0 FAIL -std/numerics/c.math/isgreater.pass.cpp:1 FAIL -std/numerics/c.math/isgreaterequal.pass.cpp:0 FAIL -std/numerics/c.math/isgreaterequal.pass.cpp:1 FAIL -std/numerics/c.math/isless.pass.cpp:0 FAIL -std/numerics/c.math/isless.pass.cpp:1 FAIL -std/numerics/c.math/islessequal.pass.cpp:0 FAIL -std/numerics/c.math/islessequal.pass.cpp:1 FAIL -std/numerics/c.math/islessgreater.pass.cpp:0 FAIL -std/numerics/c.math/islessgreater.pass.cpp:1 FAIL -std/numerics/c.math/isunordered.pass.cpp:0 FAIL -std/numerics/c.math/isunordered.pass.cpp:1 FAIL +# GH-6412 Implement P0533R9 (C++23 constexpr ) for Clang and EDG +std/language.support/support.limits/support.limits.general/cmath.version.compile.pass.cpp:2 FAIL +std/language.support/support.limits/support.limits.general/cstdlib.version.compile.pass.cpp:2 FAIL +std/numerics/c.math/fpclassify.pass.cpp:2 FAIL # P0543R3 Saturation Arithmetic # Add 'std-at-least-c++26' to tests/utils/stl/test/tests.py when beginning work on C++26. @@ -645,6 +644,11 @@ std/localization/locale.categories/category.time/locale.time.put/locale.time.put # GH-6135 : time_put_byname doesn't encode the output in UTF-8 even if the locale name contains ".UTF-8" std/localization/locale.categories/category.time/locale.time.put.byname/put1.pass.cpp FAIL +# GH-6445 : constexpr fpclassify() rejects signaling NaNs on x86 +# SKIPPED because this is x86-specific. +std/numerics/c.math/fpclassify.pass.cpp:0 SKIPPED +std/numerics/c.math/fpclassify.pass.cpp:1 SKIPPED + # *** VCRUNTIME BUGS *** diff --git a/tests/libcxx/usual_matrix.lst b/tests/libcxx/usual_matrix.lst index 163ddc7403..ed85203605 100644 --- a/tests/libcxx/usual_matrix.lst +++ b/tests/libcxx/usual_matrix.lst @@ -5,6 +5,6 @@ RUNALL_INCLUDE ..\universal_prefix.lst RUNALL_CROSSLIST * PM_CL="/EHsc /MTd /std:c++latest /permissive- /utf-8 /FImsvc_stdlib_force_include.h /wd4643" RUNALL_CROSSLIST -PM_CL="/Zc:preprocessor" -ASAN PM_CL="/Zc:preprocessor -fsanitize=address /Zi" PM_LINK="/debug" +PM_CL="/Zc:preprocessor /Zc:cmath" +ASAN PM_CL="/Zc:preprocessor /Zc:cmath -fsanitize=address /Zi" PM_LINK="/debug" PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call" diff --git a/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/env.lst b/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/env.lst index f21cfd9191..a25d22d1bc 100644 --- a/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/env.lst +++ b/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/env.lst @@ -4,49 +4,26 @@ RUNALL_INCLUDE ..\usual_matrix.lst # Explicitly enable libc-based math: -# TRANSITION, MSVC-PR-766982 renamed /experimental:mathlib to /Zc:cmath, pass both until this change ships -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++14 /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++14 /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++14 /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++14 /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++17 /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++17 /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++17 /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++17 /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++20 /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++20 /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++20 /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++20 /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++23preview /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++23preview /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++23preview /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++23preview /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++latest /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++latest /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++latest /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /std:c++latest /MTd" - -# /O2 implies /Oi which affects <__msvc_math.hpp>: -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++14 /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++14 /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++14 /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++14 /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++17 /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++17 /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++17 /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++17 /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++20 /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++20 /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++20 /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++20 /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++23preview /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++23preview /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++23preview /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++23preview /MTd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++latest /MD" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++latest /MDd" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++latest /MT" -PM_CL="/EHsc /Zc:cmath /experimental:mathlib /O2 /std:c++latest /MTd" +PM_CL="/EHsc /Zc:cmath /std:c++14 /MD" +PM_CL="/EHsc /Zc:cmath /std:c++14 /MDd" +PM_CL="/EHsc /Zc:cmath /std:c++14 /MT" +PM_CL="/EHsc /Zc:cmath /std:c++14 /MTd" +PM_CL="/EHsc /Zc:cmath /std:c++17 /MD" +PM_CL="/EHsc /Zc:cmath /std:c++17 /MDd" +PM_CL="/EHsc /Zc:cmath /std:c++17 /MT" +PM_CL="/EHsc /Zc:cmath /std:c++17 /MTd" +PM_CL="/EHsc /Zc:cmath /std:c++20 /MD" +PM_CL="/EHsc /Zc:cmath /std:c++20 /MDd" +PM_CL="/EHsc /Zc:cmath /std:c++20 /MT" +PM_CL="/EHsc /Zc:cmath /std:c++20 /MTd" +PM_CL="/EHsc /Zc:cmath /std:c++23 /MD" +PM_CL="/EHsc /Zc:cmath /std:c++23 /MDd" +PM_CL="/EHsc /Zc:cmath /std:c++23 /MT" +PM_CL="/EHsc /Zc:cmath /std:c++23 /MTd" +PM_CL="/EHsc /Zc:cmath /std:c++latest /MD" +PM_CL="/EHsc /Zc:cmath /std:c++latest /MDd" +PM_CL="/EHsc /Zc:cmath /std:c++latest /MT" +PM_CL="/EHsc /Zc:cmath /std:c++latest /MTd" # Explicitly disable libc-based math: PM_CL="/EHsc /Zc:cmath- /std:c++14 /MD" @@ -61,10 +38,10 @@ PM_CL="/EHsc /Zc:cmath- /std:c++20 /MD" PM_CL="/EHsc /Zc:cmath- /std:c++20 /MDd" PM_CL="/EHsc /Zc:cmath- /std:c++20 /MT" PM_CL="/EHsc /Zc:cmath- /std:c++20 /MTd" -PM_CL="/EHsc /Zc:cmath- /std:c++23preview /MD" -PM_CL="/EHsc /Zc:cmath- /std:c++23preview /MDd" -PM_CL="/EHsc /Zc:cmath- /std:c++23preview /MT" -PM_CL="/EHsc /Zc:cmath- /std:c++23preview /MTd" +PM_CL="/EHsc /Zc:cmath- /std:c++23 /MD" +PM_CL="/EHsc /Zc:cmath- /std:c++23 /MDd" +PM_CL="/EHsc /Zc:cmath- /std:c++23 /MT" +PM_CL="/EHsc /Zc:cmath- /std:c++23 /MTd" PM_CL="/EHsc /Zc:cmath- /std:c++latest /MD" PM_CL="/EHsc /Zc:cmath- /std:c++latest /MDd" PM_CL="/EHsc /Zc:cmath- /std:c++latest /MT" diff --git a/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/test.cpp b/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/test.cpp index 594c105ae2..b33dfc3d91 100644 --- a/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/test.cpp +++ b/tests/std/tests/P0533R9_constexpr_for_cmath_and_cstdlib/test.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// TRANSITION, MSVC frontend needs to intercept inclusions of : +// TRANSITION, MSVC-PR-777572 (merged 2026-09-03) changed the MSVC frontend to intercept inclusions of : #ifndef _M_CEE_PURE #include <__msvc_inttypes.hpp> #endif @@ -41,7 +41,6 @@ template CONSTEXPR_CMATH23 void test_comparison_functions_cxx23(); CONSTEXPR_CMATH23 bool test_cmath_cxx23() { -#if defined(_MSVC_INTERNAL_TESTING) || !defined(_MSVC_LIBC_MATH) // TRANSITION, MSVC-PR-767184/772024 fixed LNK2005 { int exponent = 0; assert(frexp(15.5f, &exponent) == 0.96875f); @@ -57,7 +56,6 @@ CONSTEXPR_CMATH23 bool test_cmath_cxx23() { assert(frexp(1729, &exponent) == 0.84423828125); assert(exponent == 11); } -#endif // ^^^ no workaround ^^^ assert(ilogb(0.1729f) == -3); assert(ilogb(0.1729) == -3); @@ -245,15 +243,10 @@ CONSTEXPR_CMATH23 bool test_cmath_cxx23() { test_classification_functions_cxx23(); test_classification_functions_cxx23(); -#ifndef _MSVC_INTERNAL_TESTING // TRANSITION, MSVC-PR-767404 fixed the comparison functions in constant evaluation - if (!_Is_constant_evaluated()) -#endif // ^^^ workaround ^^^ - { - test_comparison_functions_cxx23(); - test_comparison_functions_cxx23(); - test_comparison_functions_cxx23(); - test_comparison_functions_cxx23(); - } + test_comparison_functions_cxx23(); + test_comparison_functions_cxx23(); + test_comparison_functions_cxx23(); + test_comparison_functions_cxx23(); return true; } @@ -285,12 +278,7 @@ CONSTEXPR_CMATH23 void test_classification_functions_cxx23() { constexpr T inf = numeric_limits::infinity(); constexpr T nan = numeric_limits::quiet_NaN(); -#ifndef _MSVC_INTERNAL_TESTING // TRANSITION, MSVC-PR-767404 fixed fpclassify for subnormal floats - if constexpr (!is_same_v) -#endif // ^^^ workaround ^^^ - { - assert(fpclassify(sub) == FP_SUBNORMAL); - } + assert(fpclassify(sub) == FP_SUBNORMAL); assert(fpclassify(inf) == FP_INFINITE); assert(fpclassify(nan) == FP_NAN); @@ -306,12 +294,7 @@ CONSTEXPR_CMATH23 void test_classification_functions_cxx23() { assert(!isnan(inf)); assert(isnan(nan)); -#ifndef _MSVC_INTERNAL_TESTING // TRANSITION, MSVC-PR-767404 fixed fpclassify for subnormal floats - if constexpr (!is_same_v) -#endif // ^^^ workaround ^^^ - { - assert(!isnormal(sub)); - } + assert(!isnormal(sub)); assert(!isnormal(inf)); assert(!isnormal(nan)); } @@ -657,7 +640,6 @@ CONSTEXPR_CMATH26 bool test_cmath_cxx26() { return true; } -#if defined(_MSVC_INTERNAL_TESTING) || !defined(_M_ARM64EC) // TRANSITION, MSVC-PR-767414/MSVC-PR-768260 fixed LNK2019 void test_cmath_runtime() { assert(nearbyint(3.14f) == 3.0f); assert(nearbyint(3.14) == 3.0); @@ -691,16 +673,13 @@ void test_cmath_runtime() { assert(isnan(nanf(""))); assert(isnan(nanl(""))); } -#endif // ^^^ no workaround ^^^ int main() { -#if defined(_MSVC_INTERNAL_TESTING) || !defined(_M_ARM64EC) // TRANSITION, MSVC-PR-767414/MSVC-PR-768260 fixed LNK2019 test_cmath_cxx23(); test_cstdlib_cxx23(); test_cinttypes_cxx23(); test_cmath_cxx26(); test_cmath_runtime(); -#endif // ^^^ no workaround ^^^ #ifdef __cpp_lib_constexpr_cmath static_assert(test_cmath_cxx23()); diff --git a/tests/std/tests/VSO_0157762_feature_test_macros/env.lst b/tests/std/tests/VSO_0157762_feature_test_macros/env.lst index 0b32c69f01..c5019de78e 100644 --- a/tests/std/tests/VSO_0157762_feature_test_macros/env.lst +++ b/tests/std/tests/VSO_0157762_feature_test_macros/env.lst @@ -43,6 +43,5 @@ PM_CL="/MT /std:c++14 /permissive- /EHsc /await:strict" PM_CL="/MT /std:c++14 /permissive- /EHsc /Zc:char8_t" PM_CL="/MT /std:c++17 /permissive- /EHsc /Zc:char8_t" PM_CL="/MT /std:c++latest /permissive- /EHsc" -# TRANSITION, MSVC-PR-766982 renamed /experimental:mathlib to /Zc:cmath, pass both until this change ships -PM_CL="/MT /std:c++latest /permissive- /EHsc /Zc:cmath /experimental:mathlib" +PM_CL="/MT /std:c++latest /permissive- /EHsc /Zc:cmath" PM_CL="/MT /std:c++latest /permissive- /EHsc /Zc:cmath-"