<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63442>63442</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            libcxx's `copy_move.pass.cpp` unexpectly passed on Windows with clang-cl when targeting `x86_64-pc-windows-msvc`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          zeroomega
      </td>
    </tr>
</table>

<pre>
    We are working on enable `check-runtimes-x86_64-pc-windows-msvc` test on our Clang Windows bots and we noticed that `std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp` which is expected to fail when targeting `x86_64-pc-windows-msvc` while using `libc++`, is passing under this environment. 

failing bot run: https://luci-milo.appspot.com/raw/build/logs.chromium.org/fuchsia/led/trev_google.com/e3b2824e614fce4acbd79a4b580878bc10a4fa9ac26086aaf5189b0bb88b51aa/+/build.proto

and error message (locally reproduced):

```
C:\src\test>C:\src\llvm-project\build\bin\llvm-lit.py c:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\libcxx\test -a -vv --filter .*std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp 
-- Testing: 1 of 10074 tests, 1 workers --
XPASS: llvm-libc++-static-clangcl.cfg.in :: std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp (1 of 1)
******************** TEST 'llvm-libc++-static-clangcl.cfg.in :: std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp' FAILED ********************
Script:
--
: 'COMPILED WITH'; C:/src/llvm-project/build/./bin/clang-cl.exe C:\src\llvm-project\src\libcxx\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\copy_move.pass.cpp --driver-mode=g++ --target=x86_64-pc-windows-msvc -nostdinc++ -I C:/src/llvm-project/build/include/c++/v1 -I C:/src/llvm-project/build/include/x86_64-pc-windows-msvc/c++/v1 -I C:/src/llvm-project/src/libcxx/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX -std=c++26 -Werror -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-user-defined-literals -Wno-tautological-compare -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D_LIBCPP_ENABLE_EXPERIMENTAL -Werror=thread-safety -Wuser-defined-warnings  -llibc++experimental -nostdlib -L C:/src/llvm-project/build/./lib/x86_64-pc-windows-msvc -llibc++ -lmsvcrt -lmsvcprt -loldnames -o C:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\Output\copy_move.pass.cpp.dir\t.tmp.exe
: 'EXECUTED AS';  "C:/tools/python3/bin/python.exe" C:/src/llvm-project/src/libcxx/test/../utils/run.py --execdir C:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\Output\copy_move.pass.cpp.dir -- C:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\Output\copy_move.pass.cpp.dir\t.tmp.exe
--
Exit Code: 0

Command Output (stdout):
--
$ ":" "COMPILED WITH"
$ "C:/src/llvm-project/build/./bin/clang-cl.exe" "C:\src\llvm-project\src\libcxx\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\copy_move.pass.cpp" "--driver-mode=g++" "--target=x86_64-pc-windows-msvc" "-nostdinc++" "-I" "C:/src/llvm-project/build/include/c++/v1" "-I" "C:/src/llvm-project/build/include/x86_64-pc-windows-msvc/c++/v1" "-I" "C:/src/llvm-project/src/libcxx/test/support" "-D_CRT_SECURE_NO_WARNINGS" "-D_CRT_NONSTDC_NO_WARNINGS" "-D_CRT_STDIO_ISO_WIDE_SPECIFIERS" "-DNOMINMAX" "-std=c++26" "-Werror" "-Wall" "-Wctad-maybe-unsupported" "-Wextra" "-Wshadow" "-Wundef" "-Wunused-template" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wno-user-defined-literals" "-Wno-tautological-compare" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-Wno-local-type-template-args" "-Wno-c++11-extensions" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-D_LIBCPP_ENABLE_EXPERIMENTAL" "-Werror=thread-safety" "-Wuser-defined-warnings" "-llibc++experimental" "-nostdlib" "-L" "C:/src/llvm-project/build/./lib/x86_64-pc-windows-msvc" "-llibc++" "-lmsvcrt" "-lmsvcprt" "-loldnames" "-o" "C:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\Output\copy_move.pass.cpp.dir\t.tmp.exe"
$ ":" "EXECUTED AS"
$ "C:/tools/python3/bin/python.exe" "C:/src/llvm-project/src/libcxx/test/../utils/run.py" "--execdir" "C:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\Output\copy_move.pass.cpp.dir" "--" "C:\src\llvm-project\build\runtimes\runtimes-x86_64-pc-windows-msvc-bins\test\std\utilities\function.objects\func.wrap\func.wrap.func\func.wrap.func.con\Output\copy_move.pass.cpp.dir\t.tmp.exe"

--

********************
********************
Unexpectedly Passed Tests (1):
  llvm-libc++-static-clangcl.cfg.in :: std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp


Testing Time: 2.05s
  Excluded           : 10073
  Unexpectedly Passed: 1
```

We have some suspicion that it might be related to https://devblogs.microsoft.com/cppblog/improving-copy-and-move-elision/ , however, while we use the Windows SDK came with the VS2022 to build the clang on Windows, we use the clang-cl to build our stage 1 Clang for Windows instead of using the cl from msvc, so in theory, this msvc side change shouldn't affect us.

Is it a behavior change from clang-cl side? Should we update this test to expect to PASS to match the actual behavior we saw?


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWdtu4zjSfhrlpkBBpo-5yIXbhxnjzwlx5nfvlUFRZYs7lCiQlJ3M0y9ISbaUdqbTmd3BoAPDEYvFYtXHIuuzyIwR-xzxJhh-CYbzK1baVOmbP1ArleGeXcUqeb3ZIDCNcFT6d5HvQeWAOYslQjCKeIr8d6LL3IoMDXmZjLajASk4OYo8UUdDMnPgwSgCi8a6oarUMJMs38Om0oBYWQMsT-CIkCsrOCZgU2adeWOTgC5LK6SwAk1Al7sy51aoPFTxv5HbRhQeNSvaz6F7-kYQcpUHdMlV8brN1AHDghkT8qJwLh5TwVMQBvClQG6dGwp2TEg4ppiDZXqP1iEQjKL3Az2mQiKUplaUIuYB_eI-oyigM2ffTeq6yzxBDTZ1U-YHoVWeYW5DCKJ5EE2rbze_042VBV3mQX8KqbWFCfrTgC4DupQlFyQTUoWsKEyhbMhVFtClZseALuNSSAehVHsT8lSrTJRZqPTeQ8NTI5jrRadjNR62e6X2Emsb2I_phA5w1BvsOA4Yj5PxNRvEw0k0GU9i3ovYYMeuGaejaDJibDfsTa7jKI4nk3jYY8x7-KVxIyy0sqodnFt11FppyNAYtkcI6EQqzqR8BY2FVknJnW_XLtzWQIdl9fHNmesezozmwXDmMi3oLzoyKQ8ZKbRyKRMMZxUqw1ks8qZTChsWr8A_MKrJ9tbjO4lPYpE7NZcELy-1b0AYkMMBCNkJaVFDGNDp35bodXIRAs9oXDa7jOqB2kEvisYDv0-Ny9Oe3_CoDRBSjfn6OF2vnXoNWJPYxFhmBSfcbWsuQ77bhyIHh2R_Cn9jZHRSBeLypUoT-vkPPC_WzxDQ8T8z2oCOYTld3S7m8FeirHBacy0Ke9pjzYK7gAI6nj3cPfqJNqvnXwM6DvpfYFadP26f0GVnn5zPnNA9C---w4pwGeILwp9tzFrY3i5Oat22O4M6nH0DaiWqQG09V6C-FXhQh7MLKURIosUBNclUgkF_vq_WHAipTv-gP7-804HkythE5LwZsfoQRiLnskzQYVRXCbo89H589Dv16MfM1sIKfbr06NOlKYtCaQtkvp09PW_Xi9lvT4vt_cN2M326X93_sm567h_u18_z2aWu9fN89bBdrR-2m9V8sV0_Lmar5Wrx5BTuH-5W93fTr0DcOvfntcd0BGRTFQeyYVIC2XDLEpKx1xhJmdduYeLUXqxmQDYmZYk6Atm4yrrz_0uDCbGYFZJZBLLJFamFXGUZyxMiRY6E6X3pim-lwazVIi4tmqpdoDEiE3-IfE9cwlTSXOELx8IS-1pgM1BlghMmxT4_mysNapLgTuToprOomawtW1ZaJdVecCadR4VjWmTjaFmrWXt8YFp44nWSFEyzDF0RcSKNjKdOgXCVdIP1RdU7WgGTq5bohI-DoXasXoVej-CLxdwIlRu3mrerL7PHx-2v07Vb58en6S930-36X-vnxd3218V0vnhqaS3up19uF9vF18fF0-pucf88vW0WNejPbaqRJcSwHdpXF0AbpiPTucj3BoDI8-HrmJkWDlkm6y0nRQzk9sMHkhTxu9ulMxUQ6WQu8f1D4Z-UTHKWubxQf3qQfZ4r_G_PvIfSFqW9ePiFidBu_tBmhTuoOzVg8XUx--15MYfpuq4AEFBag26Vkq6uFa82VXn_dOxXbW-L0k-cPGFY11JnXJe5I2iE4AvyROifEX4g5GcM69usahjG4kVYmPlaO4WozfBn1ekMlWnH7YxNVGnbvwVOPIUOXDb6_KI-L7uMhXbUPk9dGuv_XAJTe_gOjTn1fofMNHpdStNIV20YPkVv_pqlD1GdH5niT2lPY-g98tPtv0CB3hh4jwid1Bo61AjekKJGXFfRpsWkPD1fpknngY4snVoVZTo1PXFqtTr06ST_Dolq652pVFv6llC1-zq0qmuqS6467lyiWG2FS0TrDEKLbr0NviFdb-Un6tXq6BKwC3B1aFi7_z0y1ta5RMnO2fV9YvaN7gV69ia93pC0c6iXqFrT-w5f65wqnoZV7dsfOAW-x-AuuHASVWyu0yxa7YbZNQL1gdP-Z6jHb6rjuYh2KN_FEvox3vep0_cC9TtVr5oA_sTr00T6E4d4MQW7rO4vv8L7b1n4LW9uBOQrPDJjMPFvT41_5dhmpPAPfTfaQdR_129_4VlknnzTMBqaJojFiydbCZz__GviKBr3G50LoHidiy_oq-8NQsoOCEZlCKY0heBC5dVlj7CQiX1qIUbQ6Oqfv37p3nUkeIj9TUYmuFZG7ZrLDl4UrsPxxKzQ6uB4hUOBOG7ikCAohSuYAV1CQGeQqiMeXO2e1Rc2R4TSINgUTxdT6_n_AWcZwlHY1Pf8_5pGlDq__LbzMr-yoPJmmDd5Ntb8fjgPUqUGY9keoVffhO2UPk0qcmORJaB29R1SZQR2WmVQlbgZGAXC4YZKv7q2v0LybzCMSBB4yvI9gklVKZM8oGMLbLdDbqE0YXtBVsbhziDGlB2E0s1IP9nJc2cz6C9h7e354IqEWaym9VcaVtWXZu7pcbpeu_8Zs7zCjXFbMnme5ohg2DHoL9vOXCU3_eS6f82u8KY3moz7k0mPjq7Sm2GPDgf9mLN4SCmndBSxCHt43ePXozhKrq_EDY1oPxrRHqXDIR2FSCkbDCiLMB7Hu_51MIgwY0KGbneGSu-vhDEl3oz6gwG9kixGafwdKKUd4hAM51f6xm_puNybYBBJYaw5m7HCSrxpitfY-CvRi5eLZb1d5Ku__sOklTJVgp3w_oHbxqtSy5vuHtkLm5ZxvS-co9-WXB-8O1p8_P8JAAD__3f5oes">