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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-11-06
                 CC|                            |msebor at gcc dot gnu.org
             Blocks|                            |83819
     Ever confirmed|0                           |1

--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed.  Below is an enhanced test case and the output:

$ cat u.c && gcc -O2 -S -Wall -fdump-tree-optimized=/dev/stdout u.c
struct S { int a[1024]; };

struct S *foo ()   // not transformed
{
  struct S *p = (struct S *)__builtin_malloc (sizeof (struct S));
  *p = (struct S){};
  return p;
}

struct S *bar ()   // transformed into calloc()
{
  struct S *p = (struct S *)__builtin_malloc (sizeof (struct S));
  __builtin_memset (p, 0, sizeof *p);
  return p;
}


;; Function foo (foo, funcdef_no=0, decl_uid=1907, cgraph_uid=1,
symbol_order=0)

foo ()
{
  struct S * p;

  <bb 2> [local count: 1073741824]:
  p_3 = __builtin_malloc (4096);
  *p_3 = {};
  return p_3;

}



;; Function bar (bar, funcdef_no=1, decl_uid=1911, cgraph_uid=2,
symbol_order=1)

bar ()
{
  struct S * p;

  <bb 2> [local count: 1073741824]:
  p_3 = __builtin_calloc (4096, 1); [tail call]
  return p_3;

}


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83819
[Bug 83819] [meta-bug] missing strlen optimizations

Reply via email to