https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97141
Bug ID: 97141 Summary: [10/11 Regression] aarch64, SVE: ICE in decompose, at rtl.h (during expand) since r10-4676-g9c437a108a Product: gcc Version: 11.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: --- For the following testcase: int a; short b, c; short d(short e, short f) { return e + f; } void g(void) { a = -9; for (; a != 51; a = d(a, 5)) b |= c; } AArch64 GCC ICEs at -O3 -march=armv8.2-a+sve since r10-4676-g9c437a108a14b9bdc44659c131b0da944e5ffeab: commit 9c437a108a14b9bdc44659c131b0da944e5ffeab Author: Richard Sandiford <richard.sandif...@arm.com> Date: Thu Nov 14 15:31:25 2019 Vectorise conversions between differently-sized integer vectors To reproduce: $ aarch64-none-elf-gcc -c -S -O3 -march=armv8.2-a+sve test.c during RTL pass: expand test.c: In function 'g': test.c:4:6: internal compiler error: in decompose, at rtl.h:2296 4 | void g(void) { | ^ 0xd05b28 wi::int_traits<std::pair<rtx_def*, machine_mode> >::decompose(long*, unsigned int, std::pair<rtx_def*, machine_mode> const&) /home/alecop01/toolchain/src/gcc/gcc/rtl.h:2296 0xd05b28 wide_int_ref_storage<false, false>::wide_int_ref_storage<std::pair<rtx_def*, machine_mode> >(std::pair<rtx_def*, machine_mode> const&, unsigned int) /home/alecop01/toolchain/src/gcc/gcc/wide-int.h:1034 0xd05b28 generic_wide_int<wide_int_ref_storage<false, false> >::generic_wide_int<std::pair<rtx_def*, machine_mode> >(std::pair<rtx_def*, machine_mode> const&, unsigned int) /home/alecop01/toolchain/src/gcc/gcc/wide-int.h:790 0xd05b28 wi::binary_traits<std::pair<rtx_def*, machine_mode>, std::pair<rtx_def*, machine_mode>, wi::int_traits<std::pair<rtx_def*, machine_mode> >::precision_type, wi::int_traits<std::pair<rtx_def*, machine_mode> >::precision_type>::result_type wi::sub<std::pair<rtx_def*, machine_mode>, std::pair<rtx_def*, machine_mode> >(std::pair<rtx_def*, machine_mode> const&, std::pair<rtx_def*, machine_mode> const&) /home/alecop01/toolchain/src/gcc/gcc/wide-int.h:2510 0xd05b28 rtx_vector_builder::step(rtx_def*, rtx_def*) const /home/alecop01/toolchain/src/gcc/gcc/rtx-vector-builder.h:122 0xd05d38 vector_builder<rtx_def*, machine_mode, rtx_vector_builder>::elt(unsigned int) const /home/alecop01/toolchain/src/gcc/gcc/vector-builder.h:254 0xd059a8 rtx_vector_builder::build() /home/alecop01/toolchain/src/gcc/gcc/rtx-vector-builder.c:73 0x9932f8 const_vector_from_tree /home/alecop01/toolchain/src/gcc/gcc/expr.c:12790 0x9932f8 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/alecop01/toolchain/src/gcc/gcc/expr.c:10349 0x998cfb expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/alecop01/toolchain/src/gcc/gcc/expr.c:8480 0xe5d7a4 expand_expr /home/alecop01/toolchain/src/gcc/gcc/expr.h:282 0xe5d7a4 insert_value_copy_on_edge /home/alecop01/toolchain/src/gcc/gcc/tree-outof-ssa.c:349 0xe5d7a4 eliminate_phi /home/alecop01/toolchain/src/gcc/gcc/tree-outof-ssa.c:785 0xe5d7a4 expand_phi_nodes(ssaexpand*) /home/alecop01/toolchain/src/gcc/gcc/tree-outof-ssa.c:1024 0x85aa3c execute /home/alecop01/toolchain/src/gcc/gcc/cfgexpand.c:6553 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.