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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] Missing nsw flag when transform -A - B into -(A+B) if both have nsw flag
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    * test: https://alive2.llvm.org/ce/z/PDUQnc
 > the case @src have nsw flag, after the instcombine, it doesn't seem improved anything but missing nsw,
so I don't sure we should prevent such transformation ?
```
define i8 @src(i8 %a, i8 %b) {
entry:
  %sub = sub nsw i8 0, %a
  %r = sub nsw i8 %sub, %b
  ret i8 %r
}

define i8 @tgt(i8 %a, i8 %b) {
entry:
  %sub = add i8 %a, %b
  %r = sub i8 0, %sub
  ret i8 %r
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykU0GPmzwQ_TXDZZTIGSDAgUOy-ZD28EntoT_AmAFcgR3ZJtH211cmbLPbHnqohOSBeW94M54nvdeDYa4hP0N-SeQSRuvqW9_1fdLa7q0GOmFgHyA94RjC1UN6AmqAGjnpG9N-mm7z3roBqFEM1PwAar5cvn01CsQFxAkh_Q_DyKikZ4RMeKdwlDdG4-_YT3IAekHZB3YrTBsflJ1bbTgmdMDOsjdARUDPPKOer87euENp3sKozYDtEnDW3sfY-DvQy-PX3uIrdnbjLo7xzuhHu0wdXh3f2MTPasTgpPG9dbMM2hqEtHkUgKPYnvW1414bRl1ubQCVMaZcrkrXsAWqEIrzg8EmuLc4sccoIsAvLUJ6wXjGCegSRaSvZZ4w9zvoQd2Q7TvScdiSbpNcXLbgT8lhCP8kWXYdfmB_1PFJ8YeWouS_S30fc9LVaVellUy4PhSiqkReVJSMdZ-2xUFxnh8ObV-pVMk8rUioqs2L_lipRNckKBOpKA9pVuW0r7qDVESZyMpOimMKmeBZ6unXviba-4XrMsvKYzLJlie_uoDI8B3XJBBFU7g6cnbtMnjIxKR98M8qQYdptc-r8eFl29v8gv8_93FdcryPbJ6LhrsT7vCM2gSLO6DyBHQ-x4vQPbY2jJ8tkixuqj_bb9BhXNq9sjNQE-Vsx-7q7HdWAahZm_BAzdrkzwAAAP__oeolyQ">