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

    <tr>
        <th>Summary</th>
        <td>
            Bad codegen after commit 957eed0b1af2cb88edafe1ff2643a38165c67a40
        </td>
    </tr>

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

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

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

<pre>
    We have an internal test which recently started failing when compiled with optimizations. I was able to bisect the failure to commit 957eed0b1af2cb88edafe1ff2643a38165c67a40. Here is the reduced test case:
```c++
extern "C" void printf(...);
typedef double __attribute__((ext_vector_type(2))) a;
a b{-0.0617794755735, -0.867816130255}, c = 302.232471398, d = -524.574969857,
                                        e = -385.69192343;
int main() {
  for (unsigned f = 0; f < 134; ++f)
    d += e;
  a g = d.xx, h(c - g);
  a i = __builtin_shufflevector(h, h, 2, 2);
  volatile a j(b - i);
  printf("%lf %lf\n", j, j[1]);
}
```
When compiled with optimizations and `-mavx`, the test should produce the output `-52509.586960 -52510.392997`. After 957eed0b1af2cb88edafe1ff2643a38165c67a40 though it now produces `0.000000 0.000000`.
```
$ ~/src/upstream/093200fd00ff5d3a615410ce66d666467629a10b-linux/bin/clang++ -mavx -O2 test.cpp -o test.good.out
$ ~/src/upstream/957eed0b1af2cb88edafe1ff2643a38165c67a40-linux/bin/clang++ -mavx -O2 test.cpp -o test.bad.out
$ ./test.good.out 
-52509.586960 -52510.392997
$ ./test.bad.out 
0.000000 0.000000
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVM-TrCYQ_mucS9dYCAJ68LA7m6nklOM7ToGg8srRKcHZ3fz1aXBmspuXytvEQoWm-6N_fI2ezXvzzcKgrhbUBG4KdpnUCMH6AK-DawdYbGunML6DD2oJ1kCn3OimHrftBO18vrgRpa8uDDBfgju7P1Rw8-Rz-A1elQelRwthBu28bQOEwSaIdUlSBDi7ADWX1hqiC9XRVleVNaqzRddRUTLFqkLwVkhVkhx-tWjofMJZrFlbPDy52ypvM_aUkZeMPGWCbKPN6HMcSWrfYnyQUXrAF66zM3BZMOouo1We5xmtM3bTDe8Xa2wHZl5jAKeTCmFxeg32dEJtHIh2umJI83KKyiihESANUA8gBTqTz3uSE1FIWZeSc8l4Rg-AskpIDK5ghHKeyZcobSFjL4CSnDJayoLVVRSbJN5zWuZclrWoKy5Rvp0BX3zsBsIqnou6qCkr2cNPTAOclZtScDWgz3fsbl4wZ9U6eddPkQEJhaBlmh6gYGVcbKnuYgYeXpkkRXX7OAhAQZ8gTP72FmMbEL2FPfQfCxDVXFI7nfTqxuCmkx_WrhvtlnU0Gm7WB6C3z0f76zwiFbF4Cr6jssYT3GeNR_GRDhnlI4YTvxk_TElyiIbxw5-LjL98NI7V-ky1bfntJ22BfYY5EWR_Vte3aIX4kcuJw36Y1zFyco7ETvJ5DZc1JAtOOalzXolakMgEXpCc1bSuJe7m8NQhu7_cSQg-r_0A2HzT_Ho_0seDkKrpgfskwv9jsBktkSi_ZPToF-y043rxYbHqjFNSM0pIZ_DtuGFKFLwsSGuFMEKIUkhBa1UQvcfLZEUWHHWk3rEd1dRvRIKUItj_TlNy8vZygf28zft5Njmm5qdufDUd_88Nrf7mBV4hx08Owrb3b7X70fgGe7P9sRyfS7GzTSGELLFwotqZhpma1WoXXBht86wMstHYHlmpEkH-4427W5exGUK4-Hi50iOOHkm96hyBcDGO1_tvjyT6jq2JS-f9aj1OeCWl3A2NtqIQmthKyY6JtlVCMWZroUtdMkH0blTajr7BTsNG27mGEkqLgjAiaUGqvDOaMFS2hSGGMJGVxOJtNebx4Hxe-t3SJB_02nvcHJ0P_q9N5dPdZe_4akX6L415X6d-l5xtkqd_Apnt_q8">