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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
   Target Milestone|---                         |8.5
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.  It's a little tricky but I think it boils down to

extern void abort ();
extern void baz ();
extern void (*baz_call)();
static int *p;

static void foo ()
{
  if (*p != 1)
    abort ();
}

int main()
{
  int x = 1;
  p = &x;
  baz_call = foo;
  baz ();
  return 0;
}

---

void (*baz_call)();
void baz ()
{
  baz_call ();
}

and the issue being that escaping foo at baz_call = foo does not escape
foos call uses/clobbers.

Reply via email to