[Bug tree-optimization/20641] Missed optimization on the tree level (malloc attribute)

msebor at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Nov 17 22:01:00 GMT 2016


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |msebor at gcc dot gnu.org

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
The test case in comment #0 is optimized as expected but not because of
attribute malloc but rather because x is static and function f is not defined
in the same translation unit, meaning it can't access x.  The test case is
optimized on this basis even without attribute malloc:

$ cat x.c && gcc -O2 -S -Wall -Wextra -Wpedantic
-fdump-tree-optimized=/dev/stdout x.c
extern int* f (void);

static int x;

void g (void)
{
  int *p = &x;
  int *q = f ();

  *p = 12;
  *q = 8;

  if (*p != 12)  __builtin_abort ();
}

;; Function g (g, funcdef_no=0, decl_uid=1798, cgraph_uid=0, symbol_order=1)

g ()
{
  int * q;

  <bb 2>:
  q_4 = f ();
  x = 12;
  *q_4 = 8;
  return;

}


More information about the Gcc-bugs mailing list