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

            Bug ID: 118602
           Summary: Missed optimization for (0xc0 & c) ==  0x80
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: peter0x44 at disroot dot org
  Target Milestone: ---

For the following function:

bool test(char c)
{
    return ((0xc0 & c) ==  0x80);
}

gcc generates:
test(char):
        and     edi, -64
        cmp     dil, -128
        sete    al
        ret

But clang emits the smaller:

test(char):
        cmp     dil, -64
        setl    al
        ret

https://gcc.godbolt.org/z/jE7dvKEn7

Reply via email to