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

    <tr>
        <th>Summary</th>
        <td>
            [clang] Assertion failed in Vectorize
        </td>
    </tr>

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

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

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

<pre>
    I compiled this code with -O2 flag and it crashed:

```c
#include <stdint.h>
long a;
struct g {
  uint64_t h
};
int8_t i, j;
void b(int c, int, int d) {
  for (int e = 0; e < c; e++)
    a *= e * d;
}
long f() { return 1; }
int16_t k();
int16_t l(int16_t, uint8_t, struct g, int8_t, int64_t);
int32_t *m();
int64_t n();
int16_t o() {
  struct g p[8][1] = {};
  k(l(0, 0, p[4][1], 0, 0), p);
}
int16_t l(int16_t, uint8_t, struct g q, int8_t, int64_t) {
  int32_t *r;
  m(r, i && f() + (int)q.h + q.h);
}
int16_t safe_sub_func_int16_t_s_s(int16_t si1, int16_t si2)
{
  return (si1 - si2);
}
int32_t *m(int32_t *, int32_t s) {
  for (;; b(s + 3, 0, s + 1))
    if (s >= (j && &safe_sub_func_int16_t_s_s))
 n();
}
```

The crash is: 
```
clang: /root/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:7389: llvm::VectorizationFactor llvm::LoopVectorizationPlanner::computeBestVF(): Assertion `(BestFactor.Width == LegacyVF.Width || planContainsAdditionalSimplifications(getPlanFor(BestFactor.Width), CostCtx, OrigLoop)) && " VPlan cost model and legacy cost model disagreed"' failed.
```
The details can be found here: https://godbolt.org/z/Gc9T5v5Yx
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVduO2zYTfhr6ZhBDGlmnC134EP34gQAp0GCLXhk0SUnc0qSXpLZJnr4gJcvqZpMChsU5cOabb4YkdU72WoiG5AeSnzZ09IOxDaOWy57qNEmqzcXwb83_gZnrTSrBwQ_SATNcwN_SD_DhM0KnaA9Uc5AemKVuEJxke5KcSHL_L5Lpx2YZM6mZGrkAkh2d51L77UCyj5NZGd0DJdlhEp23I_PQAylnDcAotS92Zw_DHLE8Lf5S--rsQRI8wvOifTWSw4VgJbUHFmxS-_kDnGC9Dt8ZC7NrgHiChGSHuDwCi0uCh_ir71sAKBDcB2cRFsCX1AHco7COYDWnAyv8aDWkIeTiJbVPi7OHvybHdV1RryZkYR3wj1O9YXlnai5r1s5UvQmV4dkHnNcfs0Ri9U-ymwf8e-lLg24kP1QkP5H8kJL8FJkLfqvmQCwrlJAEbPEvbNs9ti36JOSP9hWOH2j6bzrg5WeErKtYcWJXcAM_Nu4CggXB4tFAPMxDQrB-2Q5R8bIdfonW0U6c3Xg5d6Nm51l7dmf3qAKcTGeYs4jLnK3wzrNDsHIyhQ93t_cyr3u9EuckUXTvn4AQLjvEc-NifdnSnUlOY49Wp0B2MDlnH2P7sXq-E0ew-EX5qzBvZ2-pZblI1rfLl0FM9w5IR7I9vOvKFNV9tGJrjfEEW6Verx9u1jwLdhfDR14Itl8s1a4z9uoItk-CeWPld0Gw_WTMbZG37HYj2b7MqjqEjhGyPcn2dw_qpdEtDcLKuo4RPX5TVGthJ2u4akcvDsL5p_ZOxB72zgkbnCHUhFWwT5G3f0juh3DYAuGfRE_Zt6f2ri2PpDzCTVF9NNpTqd2ecxkCUfW7vN6U7CSLKMII9sIHMK2x76SYj-PROH_0X8Pys5V9qGbq3qPPCE8hDDDjPFwNFyo-ECpiW2u5dLS3QnCCSLCEjoZXZvtuC0OfufBUKgeMargI6MyoOQzCikDR4P0tTADBlmDbG34xym-N7Qm23wm2_2P1l_w1__PrhjcZr7OabkSTlpjnVVnmuBkalvCs3tGiw_wiEkrFri53lJdlyrBIeLKRDSa4S-qkSNI8z3FbVyKt0yrlNKspKwqyS8SVSrUN7Q65N9K5UTRpUuZJulH0IpSLDy7iNJOI4e21TRzHy9g7skuUdN49QnjpVXylpx35aTUNE2MgNSxjuRmtat6QIf0wXrbMXFeT_u_5jzjDuM9QXxv8JwAA__8luVBk">