https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120138

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The path where it is used as uninitialized is:
```
  mrem_3 = (int) M_2(D);
  if (mrem_3 > 0)
    goto <bb 3>; [41.48%]
  else
    goto <bb 16>; [58.52%]

...

  <bb 3> [local count: 445388115]:
  _62 = mrem_3 * 2;
  if (_62 > 15)
    goto <bb 4>; [66.67%]
  else
    goto <bb 17>; [33.33%]


  <bb 17> [local count: 148462706]:

  <bb 15> [local count: 148462704]:
  # i_49 = PHI <1(6), 0(17)>
  # prephitmp_83 = PHI <_82(6), _62(17)>
  # prephitmp_81 = PHI <_94(6), src_7(D)(17)>
  _77 = 1 << prephitmp_83;
  _76 = (short unsigned int) _77;
  mask_mrem_v_74 = _76 + 65535;
  _71 = __builtin_ia32_loaddqusi512_mask (prephitmp_81, { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0 }, mask_mrem_v_74);
  _70 = VIEW_CONVERT_EXPR<__m512i>(_71);
  r[i_49] = _70;
  _63 = r[1];
  _60 = r[0];
```
So basically if M argument is between 0 and 7 (if I did my math correctly).
as line 19 will only set r[0] but leaves r[1] unitialized.

Reply via email to