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

    <tr>
        <th>Summary</th>
        <td>
            [optimization] gcc generate better code than clang base on value range propagation
        </td>
    </tr>

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

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

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

<pre>
    - test case:
`
int my_abs (int x, int y) {
  return x>y ? abs (x-y) + y: 0;
}
`
- clang's code, which need more optimization
```
my_abs: // @my_abs
  subs w8, w0, w1
  b.le .LBB0_2
  cmp w8, #0
  cneg w8, w8, mi
  add w0, w8, w1
  ret
.LBB0_2:
  mov w0, wzr
  ret
```

Compared to gcc, clang produces slightly more verbose code for a sequence, see detail https://godbolt.org/z/en7Mqcd7v
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxlUktyozAQPY3YdJkSwhh7wcKOx6uZM6T0aUApgYgkSOzTjwAzqWSqhOh_v35qYdW92kFAH0ByjyQ_E3ol9EwOdBV0H6C7v3LhgbDjrH0S9gKzcCfsBKS8rIEADsPo-ujPf92B5Dd4Jn3u1kh2iSn5GSjJnzmkvP5otwNpeN8QVnqQVuHc66PVsoUeUUFnHYIdgu70gwdt-6_09SzqinduRdgtHiB7-rQ9ofoxQvs4LtXpcmebS6QGIf19udBXttlkNzyjCcvpP2uPzVZkuTu9ubhSW-Hj9_KRpFXcWmyMQxxu2pIe7r_4HzOu94vtBu4iMcFCI-Wcu_AHg7NqlOjBG920wdxX6iZ0wnpcqIXaOuDg8X3EXi5Me0RQGLg20IYwzBSuDDZWCWtCal18mtsjftiXf96lKqdEVbk65SeeBB0MVqS4fHug4jojgwZ7dDwgCAwB3YogtLx_AhZx-8D2MHEzIrhownmIgTdLmWR0pvqBSYd2FKm0XVSMmbbfLqa9oQxR1d6P6KNQ7LOcJW0l-ekgaFGXXB7zbF8WQslC1igPlDFxyhPDBRo_DxGBJ7pi0U5zmmWHgtIiPRSiREnLjNfFseBZXCzsIl3p3HhmJ3HVgkGMjY9Oo33wX07uvW7iIm_1-Rha66qpVnWdLGCrBelf04YSIA">