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

            Bug ID: 91326
           Summary: VRP does not handle array value range
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zsojka at seznam dot cz
  Target Milestone: ---

Created attachment 46659
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46659&action=edit
testcase

For the attached code, gcc "10.0.0 20190730" -O3 generates:

foo:
        movsx   rdi, edi
        mov     eax, 1
        mov     edx, DWORD PTR arr[0+rdi*4]
        test    edx, edx
        je      .L1
        xor     eax, eax
        cmp     edx, 10
        setg    al
        add     eax, eax
.L1:
        ret

bar:
        xor     eax, eax
        cmp     edi, 2
        seta    al
        ret

baz:
        xor     eax, eax
        ret


clang "7.1.0" and "8.0.1" -O3 generate the optimal code for all 3 versions:

foo:
        xor     eax, eax
        ret


bar:
        xor     eax, eax
        ret


baz:
        xor     eax, eax
        ret

Reply via email to