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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] `(fcmp une T, F) ? T : F --> T` should not rely on the nsz flag on fcmp
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            llvm:instcombine,
            floating-point
      </td>
    </tr>

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

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

<pre>
    Reproducer: https://alive2.llvm.org/ce/z/_FgncC
```
define double @src(double %x, double %y) {
  %cmp = fcmp nsz une double %x, %y
  %cond = select i1 %cmp, double %x, double %y
  ret double %cond
}

define double @tgt(double returned %x, double %y) {
  ret double %x
}
```
```
Transformation doesn't verify!

ERROR: Value mismatch

Example:
double %x = #x8000000000000000 (-0.0)
double %y = #x0000000000000000 (+0.0)

Source:
i1 %cmp = #x0 (0)
double %cond = #x0000000000000000 (+0.0)

Target:
Source value: #x0000000000000000 (+0.0)
Target value: #x8000000000000000 (-0.0)
```
`nsz` flag should not be propagated from fcmp into select.

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVE2PozgQ_TXFxUpkCgjhwIFOGmlPK2Wjva4cY4hXxka2yST59SMTOh_TrZlGCPzBq0e95yrmnOy0ECVkb4DYeH6-Xn4AImTbiI3-aGw5L0YH01zKnRisaUYuLCQVOXo_OEgqwBqwZkqeBC6VOvVLYzvAmgvA-gpY_1d3mm-AVrCi802rRrRSC9KY8aAEgZQ6ywHXH3PMzoAb8pheAAsC-RvQioQ57wcCyZa0YaDdlYxP0Wb0BPv43uhmAjihBPdExnOUV5pPrAFuhX9aC5FCMvk2PL_IxHf-kYkVfrRaNH9K6ZXj_CB40ux5vLdMu9bYnnlpNGmMcBow9-QkrGwvgPHt7953u793wa5_mRoF6aXrmefHefPM-kGJYCKtntgnoQCT85q-XgRwvaBLCli8IC53BP0CAfh2xwCt_jGj5TPp3YZHgID4RHC375sce2Y74W8cNz5yCgIEJb4T4oZ_xfxejF-M0u4KK0paxTrijmZUDdHGk4MggzUD65gXDWmt6W8nWGpv5qO5BFpFTZk0RVKwSJRxnubrNcaYR8eyaFJsKG1F2sQiZvmqzXNcIedJnLdFRiNZIsWMZogU03WaLxMu8jzDNOZtFhcrBikVPZPqXqqRdG4UZZzSokgjxQ5Cubkl9NJx0w9STYcsdAbcAGJAQlJJ7Tw3_UFqcd9qlWFe6m4xGKn93EtsGRCLw9g5SKmSzrsHu5deTS3oL-38Zg6XbUlQEteTOKG096F26qlikprsSTClJosFJO9kH5R-EtkKdSFGE38UU2uYTDB6UjoarSpfW1cn_XE8LLnpAespt9trMVjzv-AesJ4kcoD1rNKpxJ8BAAD__y--gaE">