[Bug target/119556] New: gcc.target/arm/short-vfp-1.c fails
clyon at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 31 16:25:32 GMT 2025
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
More information about the Gcc-bugs
mailing list