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

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
But I don;t think the code produced is correct:
```
  <bb 3> [local count: 105119324]:
  vectp_ArgPtr.7_8 = ArgPtr_3(D) + 40;
  addr2int0_9 = (signed long) vectp_ArgPtr.7_8;
  andmask_14 = addr2int0_9 & 31;
  if (andmask_14 == 0)
    goto <bb 4>; [80.00%]
  else
    goto <bb 7>; [20.00%]

  <bb 4> [local count: 764504183]:
  # ivtmp_44 = PHI <ivtmp_45(4), vectp_ArgPtr.7_8(3)>
  # ivtmp.32_36 = PHI <ivtmp.32_12(4), 0(3)>
  _46 = MEM[(short unsigned int *)ivtmp_44];
  _48 = MEM[(short unsigned int *)ivtmp_44 + 24B];
  _50 = MEM[(short unsigned int *)ivtmp_44 + 48B];
  _52 = MEM[(short unsigned int *)ivtmp_44 + 72B];
  _54 = MEM[(short unsigned int *)ivtmp_44 + 96B];
  _56 = MEM[(short unsigned int *)ivtmp_44 + 120B];
...
```

This is only is checking if it is aligned by 32 bytes but the access is over
364Bytes long.

Reply via email to