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

    <tr>
        <th>Summary</th>
        <td>
            [clang] Segmentation fault in loop vectorization cost model during optimization pass
        </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>
    When I compiled this code with -O2 flag, it crashed:

```c
#include <stdint.h>
#define UNDEFINED(x) ((x), 0)
long b;
static int64_t j = 1;
static int64_t *k = &j;
static int64_t **l = &k;
int64_t m;
static uint64_t n;
int16_t ***o;
static int64_t ***p = &l;
uint64_t **q;

uint16_t
safe_mod_func_uint16_t_u_u(uint16_t ui1, uint16_t ui2)
{
  return 
#ifndef UNSAFE
    (ui2 == 0) ? 
    (UNDEFINED(ui1)) : 
#endif
    (ui1 % ui2);
}

int64_t
safe_mod_func_int64_t_s_s(int64_t si1, int64_t si2)
{
  return 
#ifndef UNSAFE
    ((si2 == 0) || ((si1 == INT64_MIN) && (si2 == (-1)))) ? 
    (UNDEFINED(si1)) : 
#endif
 (si1 % si2);
}

int a(int, int, int, int, int) {}
long c(int d, int *e) {
  switch (d) {
  case 9:
    return b;
  case 8:
 return *e;
  }
}
long f(int g, long, int h) {
  long i = c(g, &h);
  return i;
}
int32_t r() { int32_t *s[] = {&k, &m}; }
int32_t t(int32_t *aa) {
  uint64_t ab = 2599693332;
  uint8_t ac = 142;
  for (; n <= 4; n++)
    *aa = (safe_mod_func_uint16_t_u_u(
 safe_mod_func_int64_t_s_s(a(0, 0, 0, 0, **l + 20) + **l, **q),
               ***o |= f(**l, 0, ***p)),
           **l + ac + ab - -1695273821 + *aa);
}
```

The crash is: clang: error: unable to execute command: Segmentation fault (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Compiler returned: 254

Details can be found here: https://godbolt.org/z/3h9j7W6dG
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVk1z4ygT_jX40uWU1Ojz4IMdx2_l8GYPM1NzdGGBLDIyeATKzM6v3wIJSXE-9rCplCXUD91PP9ANzBh5VkJsSLoj6X7FetvoblOxjsszU3EUFauT5n9vvjdCwSNU-nKVreBgG2mg0lzAL2kbWP-FULfsTPAepIWqY6YRnNAtifYkCr9ZNPxX4xipVFXbcwGE3hvLpbJ3DaEPk5mLWioB3572D4fHp4c9weI3wRIIFuOrCxi5p5_SanWGE6G7YWgss7ICqWyWHC08A6F7iD8yE9z-8AiC2fMnIILbNuB-TLgAuNzO7INFLbFxNjkjuNWfhyO4vYaI7QTtX4N-TobZ7KKMflktjhfNj3WvqmOwHftjT7AIQ-hl7ARdjHHSluSje4BO2L5TMK9irbio4dvTl-3hIYAAvGd0xB33yC8cPcArwHJpffRygG1n70JxWd94jYFgGuhNeef7pQCjPO_lP5qO5mgIFkFHM2Q_D_9j8gQLc5t_fk_y-8kYB-Pj09csOf7_8WnY3RnBDF5PJ1isR3kmkT7R0vy7loEBpiHVj4UENug06vPBw-W3myb7YqyGecBHkNusIiBH8uaXtFXj-PAbS8WMgHJqIy7PUf65yEdUMaPCCrlIM2pO6hXBeiToW5f7Eog2N1w8WvoydEl5HMGsWQo30ZNvtZTKUjxa6Pzie9cQvhHcmqEDD2We73xvGSJcnAu6gzee7EA9eGDshvHUINjJu8W0LLOSUooLwg5UOEw1dMdkaax15_cq3YFyPdohEj8iuPP_5XIHbhkb21Txab8Z53xWk26_RWNzX_5M_Rd3gENJ4S58nQE_h6NhJrf4m7uuL0e693tg4WIRyHXeUHFvvS3JOP3c4wRrWMdZmWJOC4wDPb847xRYOBKX9fa1EcMJCtK46q1aps7uRXSd7txLr9ipFWA1iN-i6q1wB_OFKXfiwhdxvgjlzhGtoGZ963ZHUelOAO8vV8GnVXvr2H-ButPKCsWDV6iZP_R572O6KwNrfSM2AtYv_psQINWLrnzYKcL9cF_oxrrwVwLANFmmuxeWydZAxRScBNS6Vxwa0QmHbay9OhEIHggezpqfdGvvdHcmePhD8ECb8jn_nvH_rfiG8pKWbCU2cU6jKCrSJFs1mzznguWsZKyMeEKLiNMkS1PBRFHVhTit5AYjTOII8yhN0yS7S9KCxpzHCaNlfOIpSSJxYbK9a9uXi4u9ksb0YhPHNC-TVctOojX-BoU4SIroLlPdxk1Yn_qzIUnUSmPN7MJK2_pr1zAj3b-3blJBq_UVXkRldSf_DLZKGwsXzUULvO-kOoO-WnkJ5iszZtV37eZGO2mb_nRX6QvBg6MxPtbXTj-LyhI8-LQMwcOY2csG_wkAAP__6Y7DkQ">