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

--- Comment #3 from mcccs at gmx dot com ---
  MEM <unsigned long> [(void *)2654208B] = 256;
  MEM[(char *)2654209B] = 0;
  MEM[(char *)2654210B] = 0;
  MEM[(char *)2654211B] = 0;
  MEM[(char *)2654212B] = 0;
  MEM[(char *)2654213B] = 0;
  MEM[(char *)2654214B] = 0;
  MEM[(char *)2654215B] = 0;
  _43 = MEM[(struct S *)2654208B].next;
  if (_43 != 0B)
    goto <bb 5>; [70.00%]
  else
    goto <bb 6>; [30.00%]

  <bb 5> [local count: 27834968]:

  # DEBUG BEGIN_STMT

  _43->next = 256B;


Looking at the optimized pass output for the end of the 0th iteration and the
1st iteration afterwards, for some reason, in the 1st iteration:

for(char *addr = (char *)s1; addr < (char *)s1 + sizeof(*s1); ++addr)

was interpreted as

for(char *addr = 1 + (char *)s1; addr < (char *)s1 + sizeof(*s1); ++addr)

likewise for the end of 1st iteration and the 2nd iteration

Reply via email to