diff options
author | Chenghui Pan <panchenghui@loongson.cn> | 2023-12-22 16:18:44 +0800 |
---|---|---|
committer | Lulu Cheng <chenglulu@loongson.cn> | 2023-12-27 14:54:40 +0800 |
commit | feaff27b290f4635df3c374fd4106259c6c654df (patch) | |
tree | 3eb889212518a5c049af743b01ea598e07e88db3 /gcc/gcov-io.h | |
parent | 183a51935cc9ba1aa0b78f8339edb5f1290320c5 (diff) | |
download | gcc-feaff27b290f4635df3c374fd4106259c6c654df.zip gcc-feaff27b290f4635df3c374fd4106259c6c654df.tar.gz gcc-feaff27b290f4635df3c374fd4106259c6c654df.tar.bz2 |
LoongArch: Fix ICE when passing two same vector argument consecutively
Following code will cause ICE on LoongArch target:
#include <lsxintrin.h>
extern void bar (__m128i, __m128i);
__m128i a;
void
foo ()
{
bar (a, a);
}
It is caused by missing constraint definition in mov<mode>_lsx. This
patch fixes the template and remove the unnecessary processing from
loongarch_split_move () function.
This patch also cleanup the redundant definition from
loongarch_split_move () and loongarch_split_move_p ().
gcc/ChangeLog:
* config/loongarch/lasx.md: Use loongarch_split_move and
loongarch_split_move_p directly.
* config/loongarch/loongarch-protos.h
(loongarch_split_move): Remove unnecessary argument.
(loongarch_split_move_insn_p): Delete.
(loongarch_split_move_insn): Delete.
* config/loongarch/loongarch.cc
(loongarch_split_move_insn_p): Delete.
(loongarch_load_store_insns): Use loongarch_split_move_p
directly.
(loongarch_split_move): remove the unnecessary processing.
(loongarch_split_move_insn): Delete.
* config/loongarch/lsx.md: Use loongarch_split_move and
loongarch_split_move_p directly.
gcc/testsuite/ChangeLog:
* gcc.target/loongarch/vector/lsx/lsx-mov-1.c: New test.
Diffstat (limited to 'gcc/gcov-io.h')
0 files changed, 0 insertions, 0 deletions