It appears that the *arm_extendqisi pattern never match anything for
reasons I can't find.  This means that on ARMv4 and ARMv5, this code:

int foo(signed char *x) { return *x; }

produces:

        ldrb    r0, [r0, #4]
        mov     r0, r0, asl #24
        mov     r0, r0, asr #24
        mov     pc, lr

instead of the expected:

        ldrsb   r0, [r0, #4]
        mov     pc, lr

-- 
           Summary: *arm_extendqisi appears to never be matched
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: rearnsha at arm dot com
        ReportedBy: nico at cam dot org
                CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: arm-unknown-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20010

Reply via email to