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

Reply via email to