https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103729
Bug ID: 103729 Summary: ls64 tests fail on aarch64 with -mabi=ilp32 and aarch64_be Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: clyon at gcc dot gnu.org Target Milestone: --- Hi Przemyslaw, I have noticed that your recent patch r12-5955 (Add LS64 extension and intrinsics) introduced a few failures in the tests you added. On aarch64-none-elf -mabi=ilp32: gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b-2.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b-2.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b-3.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b-3.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld_st_o0.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld_st_o0.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-2.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-2.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-3.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-3.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-2.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-2.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-3.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-3.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0.c (test for excess errors) with eg: Excess errors: during RTL pass: expand /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/gcc/include/arm_acle.h:227:10: internal compiler error: in maybe_legitimize_operand, at optabs.c:7717 0xd24324 maybe_legitimize_operand /gcc/optabs.c:7716 0xd24324 maybe_legitimize_operands(insn_code, unsigned int, unsigned int, expand_operand*) /gcc/optabs.c:7853 0xd2435d maybe_gen_insn(insn_code, unsigned int, expand_operand*) /gcc/optabs.c:7872 0xd245a8 maybe_expand_insn(insn_code, unsigned int, expand_operand*) /gcc/optabs.c:7915 0xd23b48 expand_insn(insn_code, unsigned int, expand_operand*) /gcc/optabs.c:7946 0x132b5f0 aarch64_expand_builtin_ls64 /gcc/config/aarch64/aarch64-builtins.c:2220 0x132b5f0 aarch64_general_expand_builtin(unsigned int, tree_node*, rtx_def*, int) /gcc/config/aarch64/aarch64-builtins.c:2519 0x8a9534 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int) /gcc/builtins.c:6885 0xa2b3e5 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /gcc/expr.c:11533 0x8da30c expand_expr /gcc/expr.h:301 0x8da30c expand_call_stmt /gcc/cfgexpand.c:2831 0x8da30c expand_gimple_stmt_1 /gcc/cfgexpand.c:3864 0x8da30c expand_gimple_stmt /gcc/cfgexpand.c:4028 0x8db4cc expand_gimple_tailcall /gcc/cfgexpand.c:4074 0x8db4cc expand_gimple_basic_block /gcc/cfgexpand.c:6046 0x8dd871 execute /gcc/cfgexpand.c:6795 On aarch64_be-none-elf: gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_asm.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_asm.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b-3.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b-3.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld64b.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld_st_o0.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_ld_st_o0.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64b-2.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64b-2.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64b.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64b.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-2.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-2.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-3.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv-3.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-2.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-2.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-3.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0-3.c (test for excess errors) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0.c (internal compiler error) gcc:gcc.target/aarch64/acle/acle.exp=gcc.target/aarch64/acle/ls64_st64bv0.c (test for excess errors) with eg: /gcc/testsuite/gcc.target/aarch64/acle/ls64_asm.c:19:1: error: unrecognizable insn: (insn 7 8 0 2 (set (mem:V8DI (reg/v/f:DI 92 [ output ]) [1 *output_2(D)+0 S64 A64]) (reg:V8DI 94)) "/gcc/testsuite/gcc.target/aarch64/acle/ls64_asm.c":15:5 -1 (nil)) during RTL pass: vregs /gcc/testsuite/gcc.target/aarch64/acle/ls64_asm.c:19:1: internal compiler error: in extract_insn, at recog.c:2769 0x6b2b00 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /gcc/rtl-error.c:108 0x6b2b1c _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) /gcc/rtl-error.c:116 0xdbf917 extract_insn(rtx_insn*) /gcc/recog.c:2769 0xaa3a1d instantiate_virtual_regs_in_insn /gcc/function.c:1611 0xaa3a1d instantiate_virtual_regs /gcc/function.c:1985 0xaa3a1d execute /gcc/function.c:2034