https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120203
Bug ID: 120203
Summary: RISC-V: Frm restore missing after call insn
(float-point-dynamic-frm-74.c)
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: target
Assignee: vineetg at gcc dot gnu.org
Reporter: vineetg at gcc dot gnu.org
CC: jeffreyalaw at gmail dot com, pan2.li at intel dot com,
rdapp at gcc dot gnu.org
Target Milestone: ---
FRM mode switching is failing to reload a frm after a function call.
The issue happens all the way to when the test was added and thus test
expectation needs to be adjusted as well.
The overall control flow of test is as follows:
| frrm a5
| fsrmi 1
| vfadd.vv v1,v8,v9
| fsrm a5 <-- call1/call2: restore before call
| beq a1,zero,.L2
|
| call normalize_vl_1
| frrm a5 <-- call1: save after call
|
| .L3:
| fsrmi 3
| vfadd.vv v8,v8,v9
| fsrm a5
| jr ra
|
| .L2:
| call normalize_vl_2
| frrm a5 <-- call2: save after call MISSING
| j .L3