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

    <tr>
        <th>Summary</th>
        <td>
            Unnecessary `fsqrt` of `0.0`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            missed-optimization
      </td>
    </tr>

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

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

<pre>
    https://godbolt.org/z/s4T3dc6ae

```rust
pub fn sqrt_of_sum(xs: &[f64]) -> f64 {
 xs.iter().sum::<f64>().sqrt()
}
```

```asm
example::sqrt_of_sum::h8605ab463220c776:
 cbz     x1, .LBB0_3
        cmp     x1, #4
        b.hs .LBB0_4
        mov     x9, #-9223372036854775808
        mov     x8, xzr
        fmov    d0, x9
        b       .LBB0_7
.LBB0_3:
 mov     x8, #-9223372036854775808
        fmov    d0, x8
 fsqrt   d0, d0
        ret
...
```

The main loop body is not important here, we are concerned with the early return in the `len == 0` case. Here, we load `0.0` into `x8` and `fsqrt` it; but we could just return `0.0` directly.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVE2P5CYQ_TX4gtqiC-OPgw_T29uKlBw35xE25TEbDF7Asz3z6yNsz_Z0K4mCkDH1ePVeYYwMQb9YxJaIExHnTC5xdL79fUL5l7ZZ59RbO8Y4B8KfCFwIXF6c6pyJufMvBC7vBC6h-MZVX0ok7EzY0_4s2db9EuIWmpeODpaGHz4-u-E5LBOB-poyUwIlEaehLIg4E2jogfCvdCgLSqrTRqbXkOuInkBNoMkTmT-t_Uui8a8fwA8ft9fdR3V-MPSPLmWYtghe5TQb3JJ_troGxrpkQnZFyQFYX1VlCm_--u6dpnY9EvhC8z9OJ_bMd2xv_TR_WkKAF_d4l49hZz4gk3vdmM3OPDQAnFfAeFmLoqpEzep_odSJcn339_Cw44qtcPPgZB83M9UGftT0q-R7if_l6kH2Ax3STv8KK3ZP8rifoDzP_-NjfhuRTlJbapybaTq6VAdqXaR6mp2P0kY6osck8ROp9Eh7Z3v0FhX9qeNI44gUpTdvSXLxlmq7xkjJDFpK-JnwM026tJcBc_rbLZ1xUqWFLF9xbaNL02udZtKu2FrmikbCT7RbYmL2bjGKfl9C_JC9pVHaYx_NW_650Ey1XDW8kRm2xwqqioujENnYDl1VsKbrpCjYINUwcCyqXoHAXrK-hky3wKBgDWcAIITIGeeClUXXgWJYCkUKhpPUJjfmdUr_eKZDWLA9Hpmom8zIDk1YLwuASYeA6uDmqCf9LqN2lgCkW8S3iX7olpdACmZ0iOGWMOposP3TWuwxBOnf7nbGDbfqs8Wbx9tHx3Hp8t5NBC4p5T4cZu--Yx8JXFbDgcBl9_zawt8BAAD__-WxVlw">