From 80fdaab704b1a1ff8706254f9a26339a4fccf85e Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 11:57:23 +0800 Subject: [PATCH 01/13] Build tests for ARM64EC pipeline --- azure-pipelines.yml | 14 ++++++++++++++ tests/utils/stl/test/tests.py | 9 ++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1f8c6505343..973387da76a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -160,3 +160,17 @@ stages: targetArch: arm64 targetPlatform: arm64 testsBuildOnly: true + + - stage: Build_And_Test_ARM64EC + dependsOn: Build_And_Test_x64 + displayName: 'Build and Test ARM64EC' + pool: + name: ${{ variables.poolName }} + demands: ${{ variables.poolDemands }} + jobs: + - template: azure-devops/build-and-test.yml + parameters: + hostArch: x64 + targetArch: arm64 + targetPlatform: arm64ec + testsBuildOnly: true diff --git a/tests/utils/stl/test/tests.py b/tests/utils/stl/test/tests.py index ef51b790d4a..d7e2f3b248c 100644 --- a/tests/utils/stl/test/tests.py +++ b/tests/utils/stl/test/tests.py @@ -232,11 +232,11 @@ def _handleEnvlst(self, litConfig): self.compileFlags.extend(self.envlstEntry.getEnvVal('PM_CL', '').split()) self.linkFlags.extend(self.envlstEntry.getEnvVal('PM_LINK', '').split()) + targetArch = litConfig.target_arch.casefold() if ('clang'.casefold() in os.path.basename(cxx).casefold()): self._addCustomFeature('clang') self._addCustomFeature('gcc-style-warnings') - targetArch = litConfig.target_arch.casefold() if (targetArch == 'x64'.casefold()): self.compileFlags.append('-m64') elif (targetArch == 'x86'.casefold()): @@ -245,6 +245,9 @@ def _handleEnvlst(self, litConfig): return Result(UNSUPPORTED, 'clang targeting arm is not supported') elif (targetArch == 'arm64'.casefold()): self.compileFlags.append('--target=arm64-pc-windows-msvc') + elif (targetArch == 'arm64ec'.casefold()): + self.compileFlags.append('/arm64EC') + self.linkFlags.append('/machine:arm64ec') elif ('nvcc'.casefold() in os.path.basename(cxx).casefold()): self._addCustomFeature('nvcc') @@ -253,6 +256,10 @@ def _handleEnvlst(self, litConfig): else: self._addCustomFeature('cl-style-warnings') + if (targetArch == 'arm64ec'.casefold()): + self.compileFlags.append('/arm64EC') + self.linkFlags.append('/machine:arm64ec') + self.cxx = os.path.normpath(cxx) return None From 844c8a5de43dc20ff6bbb6d94f2fd89bcb7ec407 Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 12:19:02 +0800 Subject: [PATCH 02/13] Temporarily mark clang as UNSUPPORTED due to LLVM-116256 --- tests/utils/stl/test/tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/utils/stl/test/tests.py b/tests/utils/stl/test/tests.py index d7e2f3b248c..815c26e1d2d 100644 --- a/tests/utils/stl/test/tests.py +++ b/tests/utils/stl/test/tests.py @@ -246,8 +246,8 @@ def _handleEnvlst(self, litConfig): elif (targetArch == 'arm64'.casefold()): self.compileFlags.append('--target=arm64-pc-windows-msvc') elif (targetArch == 'arm64ec'.casefold()): - self.compileFlags.append('/arm64EC') - self.linkFlags.append('/machine:arm64ec') + # TRANSITION, LLVM-116256 (fixed in Clang 20) + return Result(UNSUPPORTED, 'clang targeting arm64ec is not supported') elif ('nvcc'.casefold() in os.path.basename(cxx).casefold()): self._addCustomFeature('nvcc') From 5eeae81e2dfec14d0d6ec6c3de9282b6936daead Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 13:57:18 +0800 Subject: [PATCH 03/13] Add 'arm64ec' feature --- tests/utils/stl/test/features.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/utils/stl/test/features.py b/tests/utils/stl/test/features.py index f5a13551fc1..6510a36af6a 100644 --- a/tests/utils/stl/test/features.py +++ b/tests/utils/stl/test/features.py @@ -65,4 +65,7 @@ def getDefaultFeatures(config, litConfig): elif litConfig.target_arch.casefold() == 'arm64'.casefold(): DEFAULT_FEATURES.append(Feature(name='arm64')) + elif litConfig.target_arch.casefold() == 'arm64ec'.casefold(): + DEFAULT_FEATURES.append(Feature(name='arm64ec')) + return DEFAULT_FEATURES From 28d8f223b2875c29da9061be675b0cdb81dcc34a Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 13:59:28 +0800 Subject: [PATCH 04/13] Add workaround for warning C28301 --- tests/utils/stl/test/tests.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/utils/stl/test/tests.py b/tests/utils/stl/test/tests.py index 815c26e1d2d..a21801f549a 100644 --- a/tests/utils/stl/test/tests.py +++ b/tests/utils/stl/test/tests.py @@ -260,6 +260,10 @@ def _handleEnvlst(self, litConfig): self.compileFlags.append('/arm64EC') self.linkFlags.append('/machine:arm64ec') + # TRANSITION, the Windows SDK emits "warning C28301: No annotations for first declaration of 'meow'" + # for various intrinsics when building for ARM64EC. + self.compileFlags.append('/wd28301') + self.cxx = os.path.normpath(cxx) return None From 0d82a38851778539a83b1bc1bda6505fea0c521d Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 14:11:27 +0800 Subject: [PATCH 05/13] `GH_001103_countl_zero_correctness`: Test is not applicable to ARM64EC --- tests/std/tests/GH_001103_countl_zero_correctness/test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/std/tests/GH_001103_countl_zero_correctness/test.cpp b/tests/std/tests/GH_001103_countl_zero_correctness/test.cpp index b2465871e13..d9b156c5f87 100644 --- a/tests/std/tests/GH_001103_countl_zero_correctness/test.cpp +++ b/tests/std/tests/GH_001103_countl_zero_correctness/test.cpp @@ -12,7 +12,7 @@ using namespace std; int main() { // This test is applicable only to x86 and x64 platforms -#if defined(_M_IX86) || defined(_M_X64) +#if (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) assert(_Countl_zero_bsr(static_cast(0x00)) == 8); assert(_Countl_zero_bsr(static_cast(0x13)) == 3); assert(_Countl_zero_bsr(static_cast(0x83)) == 0); @@ -67,5 +67,5 @@ int main() { assert(_Countr_zero_bsf(static_cast(0x8000'0000'0000'0002)) == 1); assert(_Countr_zero_bsf(static_cast(0x8000'0000'0000'0000)) == 63); assert(_Countr_zero_bsf(static_cast(0xF000'0000'0000'0008)) == 3); -#endif // ^^^ defined(_M_IX86) || defined(_M_X64) ^^^ +#endif // ^^^ (defined(_M_IX86) && !defined(_M_HYBRID_X86_ARM64)) || (defined(_M_X64) && !defined(_M_ARM64EC)) ^^^ } From 380decd1ea433cfc44791651fd260d55a237a990 Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 14:25:40 +0800 Subject: [PATCH 06/13] `GH_002206_unreserved_names`: Add ARM64EC workaround --- .../tests/GH_002206_unreserved_names/test.compile.pass.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp index 302200fc3ef..6c2a8359b75 100644 --- a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp +++ b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp @@ -37,6 +37,12 @@ #define noop_dtor 5 #define empty_bases 6 +#ifdef _M_ARM64EC +// TRANSITION, Windows SDK 10.0.22621.0 uses '#pragma intrinsic(fabsf)' in corecrt_math.h when _M_ARM64EC is defined. +// This use is no longer present in Windows SDK 10.0.26100.0. +#undef intrinsic +#endif + #include <__msvc_all_public_headers.hpp> #if msvc != 1 From 5fe867f864bf16cf2fc36b61341823188128aa0a Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 14:35:49 +0800 Subject: [PATCH 07/13] `P1502R1_standard_library_header_units`: Pass `/machine:arm64ec` to `lib.exe` --- .../P1502R1_standard_library_header_units/custom_format.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/std/tests/P1502R1_standard_library_header_units/custom_format.py b/tests/std/tests/P1502R1_standard_library_header_units/custom_format.py index bcb09e3ec35..6a2e45ade1e 100644 --- a/tests/std/tests/P1502R1_standard_library_header_units/custom_format.py +++ b/tests/std/tests/P1502R1_standard_library_header_units/custom_format.py @@ -124,6 +124,8 @@ def getBuildSteps(self, test, litConfig, shared): if noisyProgress: print('Creating library...') cmd = ['lib.exe', '/nologo', f'/out:{libFilename}', *objFilenames] + if litConfig.target_arch.casefold() == 'arm64ec'.casefold(): + cmd.append('/machine:arm64ec') yield TestStep(cmd, shared.execDir, shared.env, False) if compileTestCppWithEdg: From 9e749856825fb7ca8ac0bf6f4a61c6ef08268665 Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 15:08:21 +0800 Subject: [PATCH 08/13] Skip modules tests for ARM64EC --- tests/std/tests/P2465R3_standard_library_modules/test.cpp | 5 +++++ tests/std/tests/VSO_1775715_user_defined_modules/test.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/tests/std/tests/P2465R3_standard_library_modules/test.cpp b/tests/std/tests/P2465R3_standard_library_modules/test.cpp index 06e295a6ef6..f69c07f3aa8 100644 --- a/tests/std/tests/P2465R3_standard_library_modules/test.cpp +++ b/tests/std/tests/P2465R3_standard_library_modules/test.cpp @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// TRANSITION, this test fails for ARM64EC when built with Windows SDK 10.0.22621.0. +// "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" +// It passes when built with Windows SDK 10.0.26100.0. +// UNSUPPORTED: arm64ec + import std; #include // intentionally not diff --git a/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp b/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp index 599515d10bc..e5a379dfb5b 100644 --- a/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp +++ b/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp @@ -3,6 +3,10 @@ // Note: To properly test the fix for VSO-1775715, don't include any headers here. +// TRANSITION, this test fails for ARM64EC when built with Windows SDK 10.0.22621.0. +// "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" +// UNSUPPORTED: arm64ec + import User; int main() { From e7fc8b65e11537a062f6732ea129f60d4b65055c Mon Sep 17 00:00:00 2001 From: cpplearner Date: Sun, 18 May 2025 17:00:11 +0800 Subject: [PATCH 09/13] Fix --- .../tests/GH_002206_unreserved_names/test.compile.pass.cpp | 4 +++- .../std/tests/P1502R1_standard_library_header_units/test.cpp | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp index 6c2a8359b75..2d065faadbf 100644 --- a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp +++ b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp @@ -41,7 +41,7 @@ // TRANSITION, Windows SDK 10.0.22621.0 uses '#pragma intrinsic(fabsf)' in corecrt_math.h when _M_ARM64EC is defined. // This use is no longer present in Windows SDK 10.0.26100.0. #undef intrinsic -#endif +#endif // ^^^ workaround ^^^ #include <__msvc_all_public_headers.hpp> @@ -53,9 +53,11 @@ #error bad macro expansion #endif // known_semantics != 2 +#ifndef _M_ARM64EC // TRANSITION, Windows SDK #if intrinsic != 3 #error bad macro expansion #endif // intrinsic != 3 +#endif // ^^^ no workaround ^^^ #if lifetimebound != 4 #error bad macro expansion diff --git a/tests/std/tests/P1502R1_standard_library_header_units/test.cpp b/tests/std/tests/P1502R1_standard_library_header_units/test.cpp index a4e51a71043..77e3c78ef71 100644 --- a/tests/std/tests/P1502R1_standard_library_header_units/test.cpp +++ b/tests/std/tests/P1502R1_standard_library_header_units/test.cpp @@ -9,6 +9,11 @@ // This EXCLUDES the headers in: // [tab:headers.cpp.c]: "Table 22: C++ headers for C library facilities" +// TRANSITION, this test fails for ARM64EC when built with Windows SDK 10.0.22621.0. +// "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" +// It passes when built with Windows SDK 10.0.26100.0. +// UNSUPPORTED: arm64ec + import ; import ; import ; From 7e44d3fd53209c4854871e73f7191a6ef368b6e0 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Mon, 19 May 2025 17:36:44 -0700 Subject: [PATCH 10/13] Oh, Diablo Canyon Perl, why can't you be more like Diablo Canyon Python? --- .../tests/P1502R1_standard_library_header_units/custombuild.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/std/tests/P1502R1_standard_library_header_units/custombuild.pl b/tests/std/tests/P1502R1_standard_library_header_units/custombuild.pl index 458338d1c47..6f622a7edd8 100644 --- a/tests/std/tests/P1502R1_standard_library_header_units/custombuild.pl +++ b/tests/std/tests/P1502R1_standard_library_header_units/custombuild.pl @@ -173,6 +173,7 @@ () # For convenience, create a library file containing all of the object files that were produced. my $libFilename = "stl_header_units.lib"; Run::ExecuteCommand(join(" ", "lib.exe", "/nologo", "/out:$libFilename", @objFilenames)); + # TRANSITION, when we test ARM64EC internally, add "/machine:arm64ec" here to match custom_format.py. Run::ExecuteCL(join(" ", "test.cpp", "/Fe$cwd.exe", @consumeBuiltHeaderUnits, $libFilename)); } From dac9adaf9214676f9458d6afcb96734c2f79d20e Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Mon, 19 May 2025 17:42:15 -0700 Subject: [PATCH 11/13] Avoid undef. --- .../test.compile.pass.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp index 2d065faadbf..704020d49f1 100644 --- a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp +++ b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp @@ -32,16 +32,16 @@ // Also test GH-2645: : Conformance issue on [[msvc::known_semantics]] #define msvc 1 #define known_semantics 2 -#define intrinsic 3 -#define lifetimebound 4 -#define noop_dtor 5 -#define empty_bases 6 -#ifdef _M_ARM64EC +#ifndef _M_ARM64EC // TRANSITION, Windows SDK 10.0.22621.0 uses '#pragma intrinsic(fabsf)' in corecrt_math.h when _M_ARM64EC is defined. // This use is no longer present in Windows SDK 10.0.26100.0. -#undef intrinsic -#endif // ^^^ workaround ^^^ +#define intrinsic 3 +#endif // ^^^ no workaround ^^^ + +#define lifetimebound 4 +#define noop_dtor 5 +#define empty_bases 6 #include <__msvc_all_public_headers.hpp> From ecffa454f9cb53063a16fd81bf4d065120f2de81 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Mon, 19 May 2025 18:30:21 -0700 Subject: [PATCH 12/13] Systematic comments "TRANSITION, Windows SDK 10.0.22621.0". --- CMakeLists.txt | 12 +++++------- .../GH_002206_unreserved_names/test.compile.pass.cpp | 7 +++---- .../P1502R1_standard_library_header_units/test.cpp | 2 +- .../tests/P2465R3_standard_library_modules/test.cpp | 2 +- .../tests/VSO_1775715_user_defined_modules/test.cpp | 3 ++- tests/utils/stl/test/tests.py | 4 ++-- 6 files changed, 14 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ec7d70b8f2..827c678af9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,16 +101,14 @@ add_compile_definitions( _WIN32_WINNT=0x0A00 NTDDI_VERSION=NTDDI_WIN10_NI) if(STL_USE_ANALYZE) - # TRANSITION OS-40109504: Windows SDK: incorrect SAL annotations on functions the STL uses - # warning C6553: The annotation for function 'LCMapStringEx' on _Param_(9) - # does not apply to a value type. - # There's a bug in the declaration for LCMapStringEx - it applies _In_opt_ to an LPARAM. - # LPARAM is a LONG_PTR (intptr_t), and it's invalid to apply _In_opt_ to a non-pointer. - # As of the Windows 11 SDK (10.0.22621.0), there are 5 total occurrences of warning C6553 affecting the STL's build. + # TRANSITION, Windows SDK 10.0.22621.0 emits + # "warning C6553: The annotation for function 'LCMapStringEx' on _Param_(9) does not apply to a value type." + # Reported as OS-40109504 "Windows SDK: incorrect SAL annotations on functions the STL uses". add_compile_options("$<$:/analyze:autolog-;/wd6553>") if(VCLIBS_TARGET_ARCHITECTURE STREQUAL "arm64ec") - # TRANSITION, the Windows SDK emits "warning C28301: No annotations for first declaration of 'meow'" + # TRANSITION, Windows SDK 10.0.22621.0 emits + # "warning C28301: No annotations for first declaration of 'meow'" # for various intrinsics when building for ARM64EC. add_compile_options("$<$:/wd28301>") endif() diff --git a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp index 704020d49f1..754a28a48e0 100644 --- a/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp +++ b/tests/std/tests/GH_002206_unreserved_names/test.compile.pass.cpp @@ -33,9 +33,8 @@ #define msvc 1 #define known_semantics 2 -#ifndef _M_ARM64EC -// TRANSITION, Windows SDK 10.0.22621.0 uses '#pragma intrinsic(fabsf)' in corecrt_math.h when _M_ARM64EC is defined. -// This use is no longer present in Windows SDK 10.0.26100.0. +#ifndef _M_ARM64EC // TRANSITION, Windows SDK 10.0.22621.0 uses '#pragma intrinsic(fabsf)' for ARM64EC. + // This use is no longer present in Windows SDK 10.0.26100.0. #define intrinsic 3 #endif // ^^^ no workaround ^^^ @@ -53,7 +52,7 @@ #error bad macro expansion #endif // known_semantics != 2 -#ifndef _M_ARM64EC // TRANSITION, Windows SDK +#ifndef _M_ARM64EC // TRANSITION, Windows SDK 10.0.22621.0 #if intrinsic != 3 #error bad macro expansion #endif // intrinsic != 3 diff --git a/tests/std/tests/P1502R1_standard_library_header_units/test.cpp b/tests/std/tests/P1502R1_standard_library_header_units/test.cpp index 77e3c78ef71..cb9bb4cb64d 100644 --- a/tests/std/tests/P1502R1_standard_library_header_units/test.cpp +++ b/tests/std/tests/P1502R1_standard_library_header_units/test.cpp @@ -9,7 +9,7 @@ // This EXCLUDES the headers in: // [tab:headers.cpp.c]: "Table 22: C++ headers for C library facilities" -// TRANSITION, this test fails for ARM64EC when built with Windows SDK 10.0.22621.0. +// TRANSITION, Windows SDK 10.0.22621.0 causes this test to fail for ARM64EC with: // "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" // It passes when built with Windows SDK 10.0.26100.0. // UNSUPPORTED: arm64ec diff --git a/tests/std/tests/P2465R3_standard_library_modules/test.cpp b/tests/std/tests/P2465R3_standard_library_modules/test.cpp index f69c07f3aa8..8ced3aa5137 100644 --- a/tests/std/tests/P2465R3_standard_library_modules/test.cpp +++ b/tests/std/tests/P2465R3_standard_library_modules/test.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// TRANSITION, this test fails for ARM64EC when built with Windows SDK 10.0.22621.0. +// TRANSITION, Windows SDK 10.0.22621.0 causes this test to fail for ARM64EC with: // "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" // It passes when built with Windows SDK 10.0.26100.0. // UNSUPPORTED: arm64ec diff --git a/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp b/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp index e5a379dfb5b..31807e4b0e3 100644 --- a/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp +++ b/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp @@ -3,8 +3,9 @@ // Note: To properly test the fix for VSO-1775715, don't include any headers here. -// TRANSITION, this test fails for ARM64EC when built with Windows SDK 10.0.22621.0. +// TRANSITION, Windows SDK 10.0.22621.0 causes this test to fail for ARM64EC with: // "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" +// It passes when built with Windows SDK 10.0.26100.0. // UNSUPPORTED: arm64ec import User; diff --git a/tests/utils/stl/test/tests.py b/tests/utils/stl/test/tests.py index a21801f549a..ba2b79e9d79 100644 --- a/tests/utils/stl/test/tests.py +++ b/tests/utils/stl/test/tests.py @@ -259,8 +259,8 @@ def _handleEnvlst(self, litConfig): if (targetArch == 'arm64ec'.casefold()): self.compileFlags.append('/arm64EC') self.linkFlags.append('/machine:arm64ec') - - # TRANSITION, the Windows SDK emits "warning C28301: No annotations for first declaration of 'meow'" + # TRANSITION, Windows SDK 10.0.22621.0 emits + # "warning C28301: No annotations for first declaration of 'meow'" # for various intrinsics when building for ARM64EC. self.compileFlags.append('/wd28301') From abfbdabc4abf04534686a7da4157b0136bf2e264 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Mon, 19 May 2025 18:52:18 -0700 Subject: [PATCH 13/13] Fix oopsies: VSO_1775715_user_defined_modules still won't pass, add dropped newline. --- tests/std/tests/VSO_1775715_user_defined_modules/test.cpp | 4 +++- tests/utils/stl/test/tests.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp b/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp index 31807e4b0e3..d09811eae53 100644 --- a/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp +++ b/tests/std/tests/VSO_1775715_user_defined_modules/test.cpp @@ -5,7 +5,9 @@ // TRANSITION, Windows SDK 10.0.22621.0 causes this test to fail for ARM64EC with: // "error LNK2019: unresolved external symbol fabsf referenced in function #fabsf$exit_thunk (EC Symbol)" -// It passes when built with Windows SDK 10.0.26100.0. +// Windows SDK 10.0.26100.0 will avoid that error, but we'll need to investigate why user.ixx emits: +// "error C2678: binary '==': no operator found which takes a left-hand operand of type 'const std::string' +// (or there is no acceptable conversion)" // UNSUPPORTED: arm64ec import User; diff --git a/tests/utils/stl/test/tests.py b/tests/utils/stl/test/tests.py index ba2b79e9d79..aa8a6acbc0d 100644 --- a/tests/utils/stl/test/tests.py +++ b/tests/utils/stl/test/tests.py @@ -259,6 +259,7 @@ def _handleEnvlst(self, litConfig): if (targetArch == 'arm64ec'.casefold()): self.compileFlags.append('/arm64EC') self.linkFlags.append('/machine:arm64ec') + # TRANSITION, Windows SDK 10.0.22621.0 emits # "warning C28301: No annotations for first declaration of 'meow'" # for various intrinsics when building for ARM64EC.