Hmmm? I didn't get that error on selftest?

my diff with your v2:

$ git diff
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 12655f7fdc65..466e1aed91c7 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -8058,8 +8058,9 @@ asm_insn_p (rtx_insn *insn)
static bool
vxrm_unknown_p (rtx_insn *insn)
{
+  static const_rtx vxrm_reg = gen_rtx_REG (SImode, VXRM_REGNUM);
  /* Return true if there is a definition of VXRM.  */
-  if (reg_set_p (gen_rtx_REG (SImode, VXRM_REGNUM), insn))
+  if (reg_set_p (vxrm_reg, insn))
    return true;

  /* A CALL function may contain an instruction that modifies the VXRM,
@@ -8080,8 +8081,9 @@ vxrm_unknown_p (rtx_insn *insn)
static bool
frm_unknown_dynamic_p (rtx_insn *insn)
{
+  static const_rtx frm_reg = gen_rtx_REG (SImode, FRM_REGNUM);
  /* Return true if there is a definition of FRM.  */
-  if (reg_set_p (gen_rtx_REG (SImode, FRM_REGNUM), insn))
+  if (reg_set_p (frm_reg, insn))
    return true;

  /* A CALL function may contain an instruction that modifies the FRM,


On Thu, Jul 13, 2023 at 1:07 PM Li, Pan2 via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Thanks Jeff and Kito for comments, update the V3 version as below.
>
> https://gcc.gnu.org/pipermail/gcc-patches/2023-July/624347.html
>
> > Extract vxrm reg to a local static variable to prevent construct that again 
> > and again.
>
> The "static const_rtx vxrm_rtx = gen_rtx_REG (SImode, VXRM_REGMU)" results in 
> some error when selftest like below, thus patch v3 doesn't include this 
> change.
>
> /home/pli/repos/gcc/111/riscv-gnu-toolchain/build-gcc-newlib-stage1/./gcc/xgcc
>  -B/home/pli/repos/gcc/111/riscv-gnu-toolchain/build-gcc-newlib-stage1/./gcc/ 
>  -xc -nostdinc /dev/null -S -o /dev/null 
> -fself-test=../.././gcc/gcc/testsuite/selftests
> virtual memory exhausted: Invalid argument
> make[2]: *** [../.././gcc/gcc/c/Make-lang.in:153: s-selftest-c] Error 1
>
> Pan
>
> -----Original Message-----
> From: Jeff Law <jeffreya...@gmail.com>
> Sent: Wednesday, July 12, 2023 11:31 PM
> To: Li, Pan2 <pan2...@intel.com>; gcc-patches@gcc.gnu.org
> Cc: juzhe.zh...@rivai.ai; rdapp....@gmail.com; Wang, Yanzhang 
> <yanzhang.w...@intel.com>; kito.ch...@gmail.com
> Subject: Re: [PATCH v2] RISC-V: Refactor riscv mode after for VXRM and FRM
>
>
>
> On 7/11/23 23:50, pan2...@intel.com wrote:
> > From: Pan Li <pan2...@intel.com>
> >
> > When investigate the FRM dynmaic rounding mode, we find the global
> > unknown status is quite different between the fixed-point and
> > floating-point. Thus, we separate the unknown function with extracting
> > some inner common functions.
> >
> > We will also prepare more test cases in another PATCH.
> >
> > Signed-off-by: Pan Li <pan2...@intel.com>
> >
> > gcc/ChangeLog:
> >
> >       * config/riscv/riscv.cc (regnum_definition_p): New function.
> >       (insn_asm_p): Ditto.
> >       (riscv_vxrm_mode_after): New function for fixed-point.
> >       (global_vxrm_state_unknown_p): Ditto.
> >       (riscv_frm_mode_after): New function for floating-point.
> >       (global_frm_state_unknown_p): Ditto.
> >       (riscv_mode_after): Leverage new functions.
> >       (riscv_entity_mode_after): Removed.
> > ---
> >   gcc/config/riscv/riscv.cc | 96 +++++++++++++++++++++++++++++++++------
> >   1 file changed, 82 insertions(+), 14 deletions(-)
> >
> > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
> > index 38d8eb2fcf5..553fbb4435a 100644
> > --- a/gcc/config/riscv/riscv.cc
> > +++ b/gcc/config/riscv/riscv.cc
> > @@ -7742,19 +7742,91 @@ global_state_unknown_p (rtx_insn *insn, unsigned 
> > int regno)
> >     return false;
> >   }
> >
> > +static bool
> > +regnum_definition_p (rtx_insn *insn, unsigned int regno)
> Needs a function comment.  This is true for each new function added.  In
> this specific case somethign like this might be appropriate
>
> /* Return TRUE if REGNO is set in INSN, FALSE otherwise.  */
>
> Which begs the question, is there some reason why we're not using the
> existing reg_set_p or simple_regno_set from rtlanal.cc?
>
>
>
> Jeff

Reply via email to