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

--- Comment #5 from Andrew Macleod <amacleod at redhat dot com> ---
Or better yet, distill your comments into something more compact:

extern void keep (void);
extern void kill (void);
void
f (void *p, void *q, int flag, int x)
{
  int eq = p == q;
  int nz = flag != 0;
  int both = eq & nz;

  if (both)
    return;

  if (!nz)
    return;

  if (p == q)
    kill ();
  else
    keep ();
}


We should be able to remove the kill(). 

We don't try particularly hard (yet) to distill relations through and AND or OR
operations.

Reply via email to