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

            Bug ID: 117186
           Summary: aarch64 wrong code for (a < b) < (b < a)
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kristerw at gcc dot gnu.org
  Target Milestone: ---

The aarch64 compiler compiles the function

int
lx (int oi, int mb)
{
  return (oi < mb) < (mb < oi);
}

to

lx:
        cmp     w0, w1
        cset    w0, hi
        ret

with -O1 or higher optimization level.  This is wrong. For example, lx(-1, 0)
returns an incorrect result.

Reply via email to