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

            Bug ID: 103354
           Summary: missed optimization with & and | and compares
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Take:
int h(int a, int b, int c, int d)
{
  return (c & -(a==b)) | (d & -(a!=b));
}

---- CUT ---
We currently don't optimize the above down to just:
int h(int a, int b, int c, int d)
{
  return (a==b) ? c : d;
}

This is from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92342#c4

Reply via email to