https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114801
Bug ID: 114801 Summary: [14 Regression] arm: ICE in find_cached_value, at rtx-vector-builder.cc:100 with MVE intrinsics Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: acoplan at gcc dot gnu.org Target Milestone: --- The following testcase: #include <arm_mve.h> uint32x4_t test_9() { return vdupq_m_n_u32(vdupq_n_u32(0), 0, 0xcccc); } ICEs with -march=armv8.1-m.main+mve -mfloat-abi=hard on the trunk. This appears to be a regression from GCC 13. For a preprocessed reproducer, take the following: $ cat t.c #pragma GCC arm "arm_mve_types.h" #pragma GCC arm "arm_mve.h" false uint32x4_t test_9() { return vdupq_m_n_u32(vdupq_n_u32(0), 0, 0xcccc); } $ gcc/xgcc -B gcc -c t.c -S -o /dev/null -march=armv8.1-m.main+mve -mfloat-abi=hard during RTL pass: expand t.c: In function ‘test_9’: t.c:4:10: internal compiler error: in find_cached_value, at rtx-vector-builder.cc:100 4 | return vdupq_m_n_u32(vdupq_n_u32(0), 0, 0xcccc); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0x2a7fc16 rtx_vector_builder::find_cached_value() /home/alecop01/toolchain/src/gcc/gcc/rtx-vector-builder.cc:100 0x2a7f9c9 rtx_vector_builder::build() /home/alecop01/toolchain/src/gcc/gcc/rtx-vector-builder.cc:64 0x2adff41 native_decode_vector_rtx(machine_mode, vec<unsigned char, va_heap, vl_ptr> const&, unsigned int, unsigned int, unsigned int) /home/alecop01/toolchain/src/gcc/gcc/simplify-rtx.cc:7269 0x2ae0068 native_decode_rtx(machine_mode, vec<unsigned char, va_heap, vl_ptr> const&, unsigned int) /home/alecop01/toolchain/src/gcc/gcc/simplify-rtx.cc:7289 0x2ae10c4 simplify_immed_subreg /home/alecop01/toolchain/src/gcc/gcc/simplify-rtx.cc:7529 0x2ae1807 simplify_context::simplify_subreg(machine_mode, rtx_def*, machine_mode, poly_int<1u, unsigned long>) /home/alecop01/toolchain/src/gcc/gcc/simplify-rtx.cc:7603 0x2ae31f2 simplify_context::simplify_gen_subreg(machine_mode, rtx_def*, machine_mode, poly_int<1u, unsigned long>) /home/alecop01/toolchain/src/gcc/gcc/simplify-rtx.cc:7875 0x2ae3644 simplify_context::lowpart_subreg(machine_mode, rtx_def*, machine_mode) /home/alecop01/toolchain/src/gcc/gcc/simplify-rtx.cc:7904 0x1e92c3e lowpart_subreg(machine_mode, rtx_def*, machine_mode) /home/alecop01/toolchain/src/gcc/gcc/rtl.h:3565 0x22f4d11 gen_lowpart_common(machine_mode, rtx_def*) /home/alecop01/toolchain/src/gcc/gcc/emit-rtl.cc:1627 0x2a7f336 gen_lowpart_general(machine_mode, rtx_def*) /home/alecop01/toolchain/src/gcc/gcc/rtlhooks.cc:48 0x327a20e arm_mve::function_expander::add_input_operand(insn_code, rtx_def*) /home/alecop01/toolchain/src/gcc/gcc/config/arm/arm-mve-builtins.cc:2103 0x327a887 arm_mve::function_expander::use_cond_insn(insn_code, unsigned int) /home/alecop01/toolchain/src/gcc/gcc/config/arm/arm-mve-builtins.cc:2227 0x3282fe2 arm_mve::unspec_mve_function_exact_insn::expand(arm_mve::function_expander&) const /home/alecop01/toolchain/src/gcc/gcc/config/arm/arm-mve-builtins-functions.h:339 0x327ab65 arm_mve::function_expander::expand() /home/alecop01/toolchain/src/gcc/gcc/config/arm/arm-mve-builtins.cc:2287 0x327ae1d arm_mve::expand_builtin(unsigned int, tree_node*, rtx_def*) /home/alecop01/toolchain/src/gcc/gcc/config/arm/arm-mve-builtins.cc:2352 0x3275215 arm_expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int) /home/alecop01/toolchain/src/gcc/gcc/config/arm/arm-builtins.cc:4103 0x20fd3b9 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int) /home/alecop01/toolchain/src/gcc/gcc/builtins.cc:7769 0x236a0ed expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/alecop01/toolchain/src/gcc/gcc/expr.cc:12350 0x235c6d1 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/alecop01/toolchain/src/gcc/gcc/expr.cc:9440 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.