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

Reply via email to