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

            Bug ID: 119556
           Summary: gcc.target/arm/short-vfp-1.c fails
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---
            Target: arm

g:78e0cf06c818e6293d36e52ad7a96bd9e7953c06 enabled gcc.target/arm/short-vfp-1.c
but all the scan-assembler directives fail.

In fact, it has (would have) always been the case: I rebuilt the compiler from
g:50df9464b86a58d5c959b10c33c1870c0c4c5e48 (r7-3249-g50df9464b86) and after
fixing the dg directives, the test was also failing. (the same applies after
patch 17/17 r7-3273-gcab9e1df4d3).


At that point, the generated code looked like:

test_sisf:
        @ Function supports interworking.
        @ args = 0, pretend = 0, frame = 8
        @ frame_needed = 1, uses_anonymous_args = 0
        push    {fp, lr}
        add     fp, sp, #4
        sub     sp, sp, #8
        str     r0, [fp, #-8]   @ float
        ldr     r0, [fp, #-8]   @ float
        bl      __aeabi_f2iz
        mov     r3, r0
        mov     r0, r3
        sub     sp, fp, #4
        @ sp needed
        pop     {fp, lr}
        bx      lr


Or, with -O2:
test_sisf:
        @ Function supports interworking.
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        push    {r4, lr}
        bl      __aeabi_f2iz
        pop     {r4, lr}
        bx      lr


So there's no chance any of the scan-assembler-times directives could pass...



With today's trunk at -O2, we get:
test_sisf:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        vcvt.s32.f32    s15, s0
        vmov    r0, s15 @ int
        bx      lr
        .size   test_sisf, .-test_sisf
        .align  1
        .p2align 2,,3
        .global test_hisf
        .syntax unified
        .thumb
        .thumb_func
        .type   test_hisf, %function
test_hisf:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        vcvt.s32.f32    s0, s0
        vmov    r3, s0  @ int
        sxth    r0, r3
        bx      lr
        .size   test_hisf, .-test_hisf
        .align  1
        .p2align 2,,3
        .global test_sfsi
        .syntax unified
        .thumb
        .thumb_func
        .type   test_sfsi, %function
test_sfsi:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        vmov    s0, r0  @ int
        vcvt.f32.s32    s0, s0
        bx      lr
        .size   test_sfsi, .-test_sfsi
        .align  1
        .p2align 2,,3
        .global test_sfhi
        .syntax unified
        .thumb
        .thumb_func
        .type   test_sfhi, %function
test_sfhi:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        vmov    s0, r0  @ int
        vcvt.f32.s32    s0, s0
        bx      lr
        .size   test_sfhi, .-test_sfhi
        .align  1
        .p2align 2,,3
        .global test_hisi
        .syntax unified
        .thumb
        .thumb_func
        .type   test_hisi, %function
test_hisi:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        sxth    r0, r0
        bx      lr
        .size   test_hisi, .-test_hisi
        .align  1
        .p2align 2,,3
        .global test_sihi
        .syntax unified
        .thumb
        .thumb_func
        .type   test_sihi, %function
test_sihi:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
        bx      lr


which looks good

Reply via email to