Maybe something like this?
diff --git a/gcc/common/config/riscv/riscv-common.cc
b/gcc/common/config/riscv/riscv-common.cc
index acfd7b92563..aa7edc8cfec 100644
--- a/gcc/common/config/riscv/riscv-common.cc
+++ b/gcc/common/config/riscv/riscv-common.cc
@@ -1155,6 +1155,10 @@ riscv_subset_list::parse (const char *arch,
location_t loc)
subset_list->handle_combine_ext ();
+ if (subset_list->lookup("zfinx") && subset_list->lookup("f"))
+ error_at (loc, "%<-march=%s%>: z*inx is conflict with float extensions",
+ arch);
+
return subset_list;
fail:
On Tue, Mar 28, 2023 at 10:36 PM <[email protected]> wrote:
>
> Hi Kito,
>
> Thanks for your sugestions, I had added the new testcases in the new patch.
> I feel it's hard to check long string name extension by use
> riscv_subset_list::parse,
> Since it just check one char when the pointer moving, So I still keep the
> implement
> by check the extenstison with target. Maybe we can add new check function in
> the new
> version :)
>
>
> > -----原始邮件-----
> > 发件人: "Kito Cheng" <[email protected]>
> > 发送时间: 2023-03-27 16:15:00 (星期一)
> > 收件人: Jiawei <[email protected]>
> > 抄送: [email protected], [email protected], [email protected],
> [email protected], [email protected]
> > 主题: Re: [PATCH] RISC-V: Add Z*inx incompatible check in gcc.
> >
> > HI Jiawei:
> >
> > Thanks for the fix!
> >
> > Two comments:
> > - Could you add testcase like
> >
> https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.target/riscv/arch-12.c
> > - And I would prefer those check happened in riscv_subset_list::parse
> > @gcc/common/config/riscv/riscv-common.cc
> >
> > On Sun, Mar 26, 2023 at 4:36 PM Jiawei <[email protected]> wrote:
> > >
> > > Z*inx is conflict with float extensions, add incompatible check when
> > > z*inx and hard_float both enabled.
> > >
> > > gcc/ChangeLog:
> > >
> > > * config/riscv/riscv.cc (riscv_option_override): New check.
> > >
> > > ---
> > > gcc/config/riscv/riscv.cc | 4 ++++
> > > 1 file changed, 4 insertions(+)
> > >
> > > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
> > > index 76eee4a55e9..162ba14d3c7 100644
> > > --- a/gcc/config/riscv/riscv.cc
> > > +++ b/gcc/config/riscv/riscv.cc
> > > @@ -6285,6 +6285,10 @@ riscv_option_override (void)
> > > && riscv_abi != ABI_LP64 && riscv_abi !=
> ABI_ILP32E)
> > > error ("z*inx requires ABI ilp32, ilp32e or lp64");
> > >
> > > + // Zfinx is conflict with float extensions.
> > > + if (TARGET_ZFINX && TARGET_HARD_FLOAT)
> > > + error ("z*inx is conflict with float extensions");
> > > +
> > > /* We do not yet support ILP32 on RV64. */
> > > if (BITS_PER_WORD != POINTER_SIZE)
> > > error ("ABI requires %<-march=rv%d%>", POINTER_SIZE);
> > > --
> > > 2.25.1
> > >
> </[email protected]></[email protected]></[email protected]>