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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] Usage of std::complex<llvm::APFloat> is unspecified.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Building MLIR for the Debug target, using the latest MSVC on Windows, emits a bunch of warnings such as:
```
[8166/8337] Building CXX object tools\mlir\test\lib\Dialect\Test\CMakeFiles\MLIRTestDialect.dir\TestDialect.cpp.obj
C:\git\llvm-project\mlir\include\mlir/IR/BuiltinAttributes.h(353): warning C4996: 'std::complex<llvm::APFloat>::complex': warning STL4037: The effect of instantiating the template std::complex for any type other than float, double, or long double is unspecified. You can define _SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING to suppress this warning.
```
Using:
```
cmake -GNinja %ROOT%/llvm -DCMAKE_BUILD_TYPE=Debug -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_LIBXML2=OFF -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe -DCMAKE_LINKER=link.exe -DLLVM_ENABLE_PROJECTS="llvm;clang;lld;clang-tools-extra;mlir" -DLLVM_USE_CRT_DEBUG=MTd -DLLVM_ENABLE_PDB=ON -DLLVM_ENABLE_ASSERTIONS=ON
```
[Latest WG21 working draft](https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2023/n4928.pdf) says:

> _28.4.1/2/ The effect of instantiating the template complex for any type that is not a cv-unqualified floating-point type (6.8.2) is unspecified._
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVd9vmzoU_mucFyso2EDCQx4IPyo2QqqEbt19QQYccOvYXGzW9b-_MiRbV3VXk6KAv2N_54e_cyBKsVZQugXuDrjRgoy6k8OWtERQsqhk87rdjYw3TLRwn6VHeJYD1B2FEa3GFmoytFQDFMJRmS3GwommSsP96UsIpYBfmWjkizJ76IVpBQmsRlF3UJ7hCxkEE62Caqw7SBTAAVhFYBUAb3X9zUt3t7E9D6Bkg_EauBH8GVT4-Ahl9URrDbWUXAE3vHA2ADc0UQA35KwCbhgxwmlt1sUMh3vyTBPGqTlhMjP4dZfVTARvkbrvLVk9zeGEJk43bNnEz79flv0gn2b6q3Mmaj429AagJD0ClJioNROB1gOrRk2V1QG0wS4GyAc4uNUDho7vewYAaK10Y9zhoJaXntMfAE8uZyy4T7gkGuD49z1o_ZbuVGTOCk9Q0VFIz2dTLnmGTChNhGZE3y5P00tvLhC-dztdPBGvUL_2FErdUaMDIuB5CgCFsJFjxal5kwPkUrRXBDIFR6F6WrMzo40Fv8kR1kTAhp6ZoLA8pVmch3GZH_IkOwRFmt-V4WF_n8WPZRTfH-MwKNJDXn4Njnma30EtoRr7fqBKQd0xdcvT-lA7D0aYfxJWfSHPFC7vciaeCATIPR4OBUAuQIkpMlxG4T74HJe7hzSLyuLbfQxwNEt_GWXZl315uC_SffpPHJVFsMviuzgHODrkN3OcG7TM0t3jPkPGlCQ_WcMpzTSLjwBHNbfoD_rL9vj4P9YszT9POGfi-Wp56-_-ePgUh8UJ4AggNOtlV3NiKrHjvLmtllPPLOkPPRCAd7NW0Y3s4RSX4bEoo3j3cAdwtC-a936i3UfpBqdTfDR3dpqsf-rpbJ4UX--QDV_k8GxE2AzkrIEbAbTptO6nkYASgJKXlxdL9lQslW4sObQAJZ-K0AYoOYUIAZQYGoCSRtYKoKQnPR3MC1ohDFAiHB9trL45A-RDRV7fzJr5H8ewRBvLsQyJ4fv7XvmwRXRHtJG-kBoSWH9fjuLfkfCpB-amYaJd9pIJPR8AaONZGwuZAN-1TLlotrjxsU8WdGt7a3_joI3nL7qt762xg2yEvArbdoPoul4T23Gw41B747oLtjUFWGHk2e7KXvmWZze-izYrRB3qrZELnBW9EMYtoxJT2AVTaqRbz17bzoKTinJ1-zoM22naVWOrgLPiTGn165hmmk_fETNNzYx-UKSlpnR_OcLeZ70YB779XQQt091YWbW8XDv0-vg5gFEyRW8ufkrgvwAAAP__6h4g-Q">