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

--- Comment #4 from mcccs at gmx dot com ---
By comparing S2 = 256 and S2 = 255, the brokenness and the major difference is
first outputted by the store-merging pass.

  <bb 4> [local count: 39764240]:
  MEM[(struct S *)2654208B].next = 256B;
  MEM[(char *)2654208B] = 0;
  MEM[(char *)2654209B] = 0;
  MEM[(char *)2654210B] = 0;
  MEM[(char *)2654211B] = 0;

is merged into

  <bb 4> [local count: 39764240]:
  MEM <unsigned long> [(void *)2654208B] = 256;
  MEM[(char *)2654209B] = 0;
  MEM[(char *)2654210B] = 0;
  MEM[(char *)2654211B] = 0;

for S2 = 256 ie invalid optimization when greater than 255

Reply via email to