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

Stefan Schulze Frielinghaus <stefansf at linux dot ibm.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |stefansf at linux dot ibm.com

--- Comment #4 from Stefan Schulze Frielinghaus <stefansf at linux dot ibm.com> 
---
typedef __SIZE_TYPE__ size_t;
extern void* malloc (size_t);
extern void* memset (void*, int, size_t);

__attribute__((noinline))
int test (char *s)
{
  int i;
  for (i=0; s[i]; ++i);
  return i;
}

int main (void)
{
  char *p = malloc (1024);
  memset (p, 0xf, 1024);     // removed
  p[1] = 0;                  // removed
  int i = test (p);
  if (i != 1)
    __builtin_abort ();
  return 0;
}

$ gcc -O2 -fdump-tree-dse2-details test.c

In dse2 we then have:

Deleted dead store: MEM[(char *)p_3 + 1B] = 0;
Deleted dead call: memset (p_3, 15, 1024);

prior g:008e7397dad971c03c08fc1b0a4a98fddccaaed8 the store and call is not
removed.

Reply via email to