https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117330
Bug ID: 117330 Summary: [15 Regression] ICE on Linux 6.12-rc5: in vect_get_operand_map, at tree-vect-slp.cc:552 Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: frank.scheiner at web dot de Target Milestone: --- Created attachment 59472 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59472&action=edit Preprocessed source Using the latest snapshot (gcc-15-20241027, commit b281e13ecad12d07209924a7282c53be3a1c3774) leads to an ICE in vect_get_operand_map, at tree-vect-slp.cc:552 when trying to cross-compile (on x86_64 for ia64) Linux v6.12-rc5 ([1]). This is new and not present in the prior snapshot (gcc-15-20241020, commit 01f50ebfd97a7bd17a4cc94c403a8e126986c02c with PR): ``` root@dl380-g7:/usr/src/ramdisk/torvalds-linux# ia64-linux-gcc -v -freport-bug -Wp,-MMD,kernel/sched/.build_utility.o.d -nostdinc -I./arch/ia64/include -I./arch/ia64/include/generated -I./include -I./arch/ia64/include/uapi -I./arch/ia64/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -DHAVE_WORKING_TEXT_ALIGN -DHAVE_MODEL_SMALL_ATTRIBUTE -DHAVE_SERIALIZE_DIRECTIVE -fmacro-prefix-map=./= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -pipe -ffixed-r13 -mfixed-range=f12-f15,f32-f127 -frename-registers -fno-optimize-sibling-calls -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fno-stack-protector -fomit-frame-pointer -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fmin-function-alignment=32 -fstrict-flex-arrays=3 -fno-strict-overflow -fno-stack-check -fconserve-stack -Wall -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=2048 -Wno-main -Wno-dangling-pointer -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-stringop-overflow -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wextra -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -g -Wno-unused-but-set-variable -mconstant-gp -DKBUILD_MODFILE='"kernel/sched/build_utility"' -DKBUILD_BASENAME='"build_utility"' -DKBUILD_MODNAME='"build_utility"' -D__KBUILD_MODNAME=kmod_build_utility -c -o kernel/sched/build_utility.o kernel/sched/build_utility.c Using built-in specs. COLLECT_GCC=ia64-linux-gcc Target: ia64-linux Configured with: /usr/src/gcc/configure --target=ia64-linux --enable-targets=all --prefix=/opt/gcc-15-20241027-nolibc/ia64-linux --enable-languages=c --without-headers --disable-bootstrap --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-decimal-float --disable-libquadmath --disable-libatomic --disable-libcc1 --disable-libmpx --enable-checking=release --with-system-libunwind Thread model: single Supported LTO compression algorithms: zlib zstd gcc version 15.0.0 20241027 (experimental) (GCC) COLLECT_GCC_OPTIONS='-v' '-freport-bug' '-nostdinc' '-I' './arch/ia64/include' '-I' './arch/ia64/include/generated' '-I' './include' '-I' './arch/ia64/include/uapi' '-I' './arch/ia64/include/generated/uapi' '-I' './include/uapi' '-I' './include/generated/uapi' '-include' './include/linux/compiler-version.h' '-include' './include/linux/kconfig.h' '-include' './include/linux/compiler_types.h' '-D' '__KERNEL__' '-D' 'HAVE_WORKING_TEXT_ALIGN' '-D' 'HAVE_MODEL_SMALL_ATTRIBUTE' '-D' 'HAVE_SERIALIZE_DIRECTIVE' '-fmacro-prefix-map=./=' '-std=gnu11' '-fshort-wchar' '-funsigned-char' '-fno-common' '-fno-PIE' '-fno-strict-aliasing' '-pipe' '-ffixed-r13' '-mfixed-range=f12-f15,f32-f127' '-frename-registers' '-fno-optimize-sibling-calls' '-fno-delete-null-pointer-checks' '-O2' '-fno-allow-store-data-races' '-fno-stack-protector' '-fomit-frame-pointer' '-ftrivial-auto-var-init=zero' '-fno-stack-clash-protection' '-fmin-function-alignment=32' '-fstrict-flex-arrays=3' '-fno-strict-overflow' '-fstack-check=no' '-fconserve-stack' '-Wall' '-Wundef' '-Werror=implicit-function-declaration' '-Werror=implicit-int' '-Werror=return-type' '-Werror=strict-prototypes' '-Wno-format-security' '-Wno-trigraphs' '-Wno-frame-address' '-Wno-address-of-packed-member' '-Wmissing-declarations' '-Wmissing-prototypes' '-Wframe-larger-than=2048' '-Wno-main' '-Wdangling-pointer=0' '-Wvla' '-Wno-pointer-sign' '-Wcast-function-type' '-Wstringop-overflow=0' '-Warray-bounds=0' '-Walloc-size-larger-than=18446744073709551615EiB' '-Wimplicit-fallthrough=5' '-Werror=date-time' '-Werror=incompatible-pointer-types' '-Werror=designated-init' '-Wenum-conversion' '-Wextra' '-Wunused' '-Wunused-const-variable=0' '-Wno-packed-not-aligned' '-Wformat-overflow=0' '-Wformat-truncation=0' '-Wno-stringop-truncation' '-Wno-override-init' '-Wno-missing-field-initializers' '-Wno-type-limits' '-Wno-shift-negative-value' '-Wno-maybe-uninitialized' '-Wno-sign-compare' '-Wno-unused-parameter' '-g' '-Wno-unused-but-set-variable' '-mconstant-gp' '-D' 'KBUILD_MODFILE="kernel/sched/build_utility"' '-D' 'KBUILD_BASENAME="build_utility"' '-D' 'KBUILD_MODNAME="build_utility"' '-D' '__KBUILD_MODNAME=kmod_build_utility' '-c' '-o' 'kernel/sched/build_utility.o' '-dumpdir' 'kernel/sched/' /opt/gcc-15-20241027-nolibc/ia64-linux/libexec/gcc/ia64-linux/15.0.0/cc1 -quiet -nostdinc -v -I ./arch/ia64/include -I ./arch/ia64/include/generated -I ./include -I ./arch/ia64/include/uapi -I ./arch/ia64/include/generated/uapi -I ./include/uapi -I ./include/generated/uapi -D __KERNEL__ -D HAVE_WORKING_TEXT_ALIGN -D HAVE_MODEL_SMALL_ATTRIBUTE -D HAVE_SERIALIZE_DIRECTIVE -D KBUILD_MODFILE="kernel/sched/build_utility" -D KBUILD_BASENAME="build_utility" -D KBUILD_MODNAME="build_utility" -D __KBUILD_MODNAME=kmod_build_utility -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -MMD kernel/sched/.build_utility.o.d kernel/sched/build_utility.c -quiet -dumpdir kernel/sched/ -dumpbase build_utility.c -dumpbase-ext .c -mfixed-range=f12-f15,f32-f127 -mconstant-gp -g -O2 -Wall -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=2048 -Wno-main -Wdangling-pointer=0 -Wvla -Wno-pointer-sign -Wcast-function-type -Wstringop-overflow=0 -Warray-bounds=0 -Walloc-size-larger-than=18446744073709551615EiB -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wextra -Wunused -Wunused-const-variable=0 -Wno-packed-not-aligned -Wformat-overflow=0 -Wformat-truncation=0 -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -Wno-unused-but-set-variable -std=gnu11 -version -freport-bug -fmacro-prefix-map=./= -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -ffixed-r13 -frename-registers -fno-optimize-sibling-calls -fno-delete-null-pointer-checks -fno-allow-store-data-races -fno-stack-protector -fomit-frame-pointer -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fmin-function-alignment=32 -fstrict-flex-arrays=3 -fno-strict-overflow -fstack-check=no -fconserve-stack -o - | /opt/gcc-15-20241027-nolibc/ia64-linux/lib/gcc/ia64-linux/15.0.0/../../../../ia64-linux/bin/as -v -I ./arch/ia64/include -I ./arch/ia64/include/generated -I ./include -I ./arch/ia64/include/uapi -I ./arch/ia64/include/generated/uapi -I ./include/uapi -I ./include/generated/uapi -x -mconstant-gp -o kernel/sched/build_utility.o GNU assembler version 2.43.1 (ia64-linux) using BFD version (GNU Binutils) 2.43.1 GNU C11 (GCC) version 15.0.0 20241027 (experimental) (ia64-linux) compiled by GNU C version 14.2.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 #include "..." search starts here: #include <...> search starts here: ./arch/ia64/include ./arch/ia64/include/generated ./include ./arch/ia64/include/uapi ./arch/ia64/include/generated/uapi ./include/uapi ./include/generated/uapi End of search list. Compiler executable checksum: 9d020e11a1bd97e0aab06f7733144590 during GIMPLE pass: vect In file included from kernel/sched/build_utility.c:96: kernel/sched/psi.c: In function 'collect_percpu_times': kernel/sched/psi.c:340:13: internal compiler error: in vect_get_operand_map, at tree-vect-slp.cc:552 340 | static void collect_percpu_times(struct psi_group *group, | ^~~~~~~~~~~~~~~~~~~~ 0x17b3f80 internal_error(char const*, ...) /usr/src/gcc/gcc/diagnostic-global-context.cc:518 0x61b159 fancy_abort(char const*, int, char const*) /usr/src/gcc/gcc/diagnostic.cc:1580 0x609f29 vect_get_operand_map /usr/src/gcc/gcc/tree-vect-slp.cc:552 0xf04fc0 vect_build_slp_tree_2 /usr/src/gcc/gcc/tree-vect-slp.cc:1911 0xf09c6c vect_build_slp_tree /usr/src/gcc/gcc/tree-vect-slp.cc:1806 0xf0511c vect_build_slp_tree_2 /usr/src/gcc/gcc/tree-vect-slp.cc:2743 0xf09c6c vect_build_slp_tree /usr/src/gcc/gcc/tree-vect-slp.cc:1806 0xf0511c vect_build_slp_tree_2 /usr/src/gcc/gcc/tree-vect-slp.cc:2743 0xf09c6c vect_build_slp_tree /usr/src/gcc/gcc/tree-vect-slp.cc:1806 0xf0511c vect_build_slp_tree_2 /usr/src/gcc/gcc/tree-vect-slp.cc:2743 0xf09c6c vect_build_slp_tree /usr/src/gcc/gcc/tree-vect-slp.cc:1806 0xf0b09c vect_build_slp_instance /usr/src/gcc/gcc/tree-vect-slp.cc:3851 0xf108be vect_analyze_slp(vec_info*, unsigned int, bool) /usr/src/gcc/gcc/tree-vect-slp.cc:4731 0xedf14d vect_analyze_loop_2 /usr/src/gcc/gcc/tree-vect-loop.cc:2885 0xee0be8 vect_analyze_loop_1 /usr/src/gcc/gcc/tree-vect-loop.cc:3454 0xee140a vect_analyze_loop(loop*, gimple*, vec_info_shared*) /usr/src/gcc/gcc/tree-vect-loop.cc:3614 0xf2709d try_vectorize_loop_1 /usr/src/gcc/gcc/tree-vectorizer.cc:1072 0xf2709d try_vectorize_loop /usr/src/gcc/gcc/tree-vectorizer.cc:1189 0xf27824 execute /usr/src/gcc/gcc/tree-vectorizer.cc:1305 Please submit a full bug report, with preprocessed source. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Preprocessed source stored into /tmp/ccQVSPLJ.out file, please attach this to your bugreport. ``` Looks like this clause for some reason evaluates to true now: from gcc/tree-vect-slp.cc ([2]): ``` 550 if (gimple_assign_rhs_code (assign) == COND_EXPR 551 && COMPARISON_CLASS_P (gimple_assign_rhs1 (assign))) 552 gcc_unreachable (); ``` Preprocessed source is attached (xz compressed due to size). [1]: https://github.com/johnny-mnemonic/linux-ia64/tree/v6.12-rc5-w-ia64 [2]: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/tree-vect-slp.cc;h=2e98a943e0615d503a10a60828dfc85a230505f2;hb=HEAD#l550