aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcov-io.h
diff options
context:
space:
mode:
authorChenghui Pan <panchenghui@loongson.cn>2023-12-22 16:18:44 +0800
committerLulu Cheng <chenglulu@loongson.cn>2023-12-27 14:54:40 +0800
commitfeaff27b290f4635df3c374fd4106259c6c654df (patch)
tree3eb889212518a5c049af743b01ea598e07e88db3 /gcc/gcov-io.h
parent183a51935cc9ba1aa0b78f8339edb5f1290320c5 (diff)
downloadgcc-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