Oh, okay, my fault, I didn't read the bugzilla, so you can go ahead :P
On Fri, Jul 12, 2024 at 3:51 PM Li Xu <xu...@eswincomputing.com> wrote: > > Sorry, I didn't understand. > > >>but...this seems to have discovered another bug in the current trunk? > > Isn't PR115862 the same bug as this one? > > ________________________________ > xu...@eswincomputing.com > > > From: Kito Cheng > Date: 2024-07-12 14:33 > To: Li Xu > CC: gcc-patches; juzhe.zhong; rdapp.gcc > Subject: Re: [PATCH v2] RISC-V: Disable misaligned vector access in hook > riscv_slow_unaligned_access[PR115862] > LGTM, but...this seems to have discovered another bug in the current > trunk? could you take a look? > > Will trigger by -O2 -march=rv64gcv_zvl512b -mabi=lp64d or -O2 > -march=rv64gcv_zvl256b -mabi=lp64d > > during RTL pass: combine > x.c: In function '__libc_mallinfo': > x.c:47:1: internal compiler error: in smallest_mode_for_size, at > stor-layout.cc:356 > 47 | } > | ^ > 0x2dc82e2 internal_error(char const*, ...) > > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/diagnostic-global-context.cc:491 > 0xc8fdfe fancy_abort(char const*, int, char const*) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/diagnostic.cc:1725 > 0x13bf6b7 smallest_mode_for_size(poly_int<2u, unsigned long>, mode_class) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/stor-layout.cc:356 > 0x126efea smallest_int_mode_for_size(poly_int<2u, unsigned long>) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/machmode.h:916 > 0x126efea get_best_extraction_insn > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/optabs-query.cc:208 > 0x269ac14 make_extraction > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:7779 > 0x269beff make_compound_operation_int > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:8186 > 0x269cf3f make_compound_operation(rtx_def*, rtx_code) > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:8471 > 0x26a0c8e simplify_set > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:6975 > 0x26a0c8e combine_simplify_rtx > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:6374 > 0x26a2f2f subst > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:5630 > 0x26a6fc1 try_combine > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:3312 > 0x26ac211 combine_instructions > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:1264 > 0x26ac211 rest_of_handle_combine > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:15127 > 0x26ac211 execute > ../../../../riscv-gnu-toolchain-trunk/gcc/gcc/combine.cc:15171 > Please submit a full bug report, with preprocessed source (by using > -freport-bug). > Please include the complete backtrace with any bug report. > See <https://gcc.gnu.org/bugs/> for instructions. > > On Fri, Jul 12, 2024 at 8:48 AM Li Xu <xu...@eswincomputing.com> wrote: > > > > From: xuli <xu...@eswincomputing.com> > > > > The reason is that in the following code, icode = movmisalignv8si has > > already been rejected by TARGET_VECTOR_MISALIGN_SUPPORTED, but it is > > allowed by targetm.slow_unaligned_access,which is contradictory. > > > > (((icode = optab_handler (movmisalign_optab, mode)) > > != CODE_FOR_nothing) > > || targetm.slow_unaligned_access (mode, align)) > > > > misaligned vector access should be enabled by -mno-vector-strict-align > > option. > > > > PR Target/115862 > > > > gcc/ChangeLog: > > > > * config/riscv/riscv.cc (riscv_slow_unaligned_access): Disable > > vector misalign. > > > > Signed-off-by: Li Xu <xu...@eswincomputing.com> > > --- > > gcc/config/riscv/riscv.cc | 5 +- > > .../gcc.target/riscv/rvv/base/pr115862.c | 52 +++++++++++++++++++ > > 2 files changed, 55 insertions(+), 2 deletions(-) > > create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr115862.c > > > > diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc > > index 61fa74e9322..16b210f323e 100644 > > --- a/gcc/config/riscv/riscv.cc > > +++ b/gcc/config/riscv/riscv.cc > > @@ -10269,9 +10269,10 @@ riscv_cannot_copy_insn_p (rtx_insn *insn) > > /* Implement TARGET_SLOW_UNALIGNED_ACCESS. */ > > > > static bool > > -riscv_slow_unaligned_access (machine_mode, unsigned int) > > +riscv_slow_unaligned_access (machine_mode mode, unsigned int) > > { > > - return riscv_slow_unaligned_access_p; > > + return VECTOR_MODE_P (mode) ? TARGET_VECTOR_MISALIGN_SUPPORTED > > + : riscv_slow_unaligned_access_p; > > } > > > > static bool > > diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pr115862.c > > b/gcc/testsuite/gcc.target/riscv/rvv/base/pr115862.c > > new file mode 100644 > > index 00000000000..3cbc3c3a0ea > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pr115862.c > > @@ -0,0 +1,52 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-O2 -march=rv64gcv_zvl512b -mabi=lp64d" } */ > > + > > +struct mallinfo2 > > +{ > > + int arena; > > + int ordblks; > > + int smblks; > > + int hblks; > > + int hblkhd; > > + int usmblks; > > + int fsmblks; > > + int uordblks; > > + int fordblks; > > + int keepcost; > > +}; > > + > > +struct mallinfo > > +{ > > + int arena; > > + int ordblks; > > + int smblks; > > + int hblks; > > + int hblkhd; > > + int usmblks; > > + int fsmblks; > > + int uordblks; > > + int fordblks; > > + int keepcost; > > +}; > > + > > +struct mallinfo > > +__libc_mallinfo (void) > > +{ > > + struct mallinfo m; > > + struct mallinfo2 m2; > > + > > + m.arena = m2.arena; > > + m.ordblks = m2.ordblks; > > + m.smblks = m2.smblks; > > + m.hblks = m2.hblks; > > + m.hblkhd = m2.hblkhd; > > + m.usmblks = m2.usmblks; > > + m.fsmblks = m2.fsmblks; > > + m.uordblks = m2.uordblks; > > + m.fordblks = m2.fordblks; > > + m.keepcost = m2.keepcost; > > + > > + return m; > > +} > > + > > +/* { dg-final { scan-assembler {vle32\.v} } } */ > > -- > > 2.17.1 > >