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

--- Comment #54 from Alexander Klepikov <klepikov.alex+bugs at gmail dot com> 
---
Regarding testsuite. There's execute fails, but this is due to lack of
multilib. I'll rebuild and retest.

There's also fail in pr64345-1.c, in this function:

typedef signed char int8_t;

int test_int8_t__shift_7_8 (int8_t* x) {
 return ((*x >> 7) ^ 1) & 1;
}

Clean GCC:

        .file   "pr64345-1-test.c"
        .text
        .text
        .align 1
        .align 2
        .global _test_int8_t__shift_7_8
        .type   _test_int8_t__shift_7_8, @function
_test_int8_t__shift_7_8:
        mov.l   .L4,r1
        sts.l   pr,@-r15
        jsr     @r1
        mov.b   @r4,r4
        mov     r4,r0
        tst     #1,r0
        movt    r0
        lds.l   @r15+,pr
        rts
        nop
.L5:
        .align 2
.L4:
        .long   ___ashiftrt_r4_7
        .size   _test_int8_t__shift_7_8, .-_test_int8_t__shift_7_8
        .ident  "GCC: (GNU) 13.1.0"


Patched GCC:

        .file   "pr64345-1-test.c"
        .text
        .text
        .align 1
        .align 2
        .global _test_int8_t__shift_7_8
        .type   _test_int8_t__shift_7_8, @function
_test_int8_t__shift_7_8:
        mov.b   @r4,r1
        sts.l   pr,@-r15
        cmp/pz  r1
        movt    r0
        lds.l   @r15+,pr
        rts
        nop
        .size   _test_int8_t__shift_7_8, .-_test_int8_t__shift_7_8
        .ident  "GCC: (GNU) 13.1.0"

But it looks more like it's not a fail, but an optimization.

But also there's tests that pass on patched but fail on clean. I'll take a
closer look on them later after GCC and multilibs rebuild.

Reply via email to