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

            Bug ID: 114538
           Summary: constant fold for (v + 1 == 0) == (v + 1 < v) fails
                    when v + 1 is stored in variable
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: goon.pri.low at gmail dot com
  Target Milestone: ---

int unopt(unsigned v) {
        unsigned n = v + 1;
        return (n == 0) == (n < v);
}

int opt(unsigned v) {
        return (v + 1 == 0) == (v + 1 < v);
}

unopt:
        xor     edx, edx
        add     edi, 1
        setc    dl
        xor     eax, eax
        test    edi, edi
        setne   al
        xor     eax, edx
        ret

opt:
        mov     eax, 1
        ret
  • [Bug tree-optimization/114538] ... goon.pri.low at gmail dot com via Gcc-bugs

Reply via email to