https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113270
Bug ID: 113270 Summary: [14 Regression] AArch64 ICEs in register_tuple_type Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- Several packages in Fedora ICE with PCH. A simple reproducer is e.g. cat ppp.h extern int i; cat ppp.C #include <arm_neon.h> ./cc1plus.r14-6751 -quiet -v -iprefix /usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/ -isystem ./include -isystem ./include-fixed -D_GNU_SOURCE ppp.h -quiet -dumpbase ppp.h.h -dumpbase-ext .h -mlittle-endian -mabi=lp64 -Winvalid-pch -version -o /tmp/ccGpU4JW.s --output-pch ppp.h.gch ./cc1plus.r14-6751 -quiet -v -iprefix /usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/ -isystem ./include -isystem ./include-fixed -D_GNU_SOURCE -isystem include/ -include ppp.h -isystem /usr/include ppp.C -quiet -dumpdir a- -dumpbase ppp.C -dumpbase-ext .C -mlittle-endian -mabi=lp64 -Winvalid-pch -version -o /tmp/ccwJQz4y.s GNU C++17 (GCC) version 14.0.0 20231220 (experimental) (aarch64-linux-gnu) compiled by GNU C version 12.1.1 20220507 (Red Hat 12.1.1-1), GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.16.1-GMP GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ignoring duplicate directory "include/" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/../../../../aarch64-linux-gnu/include/c++/14.0.0" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/../../../../aarch64-linux-gnu/include/c++/14.0.0/aarch64-linux-gnu" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/../../../../aarch64-linux-gnu/include/c++/14.0.0/backward" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/include" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/include-fixed" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/../../../../aarch64-linux-gnu/sys-include" ignoring nonexistent directory "/usr/src/gcc/objaa/gcc/../lib/gcc/aarch64-linux/14.0.0/../../../../aarch64-linux-gnu/include" ignoring nonexistent directory "/usr/local/lib/../aarch64-linux-gnu/include/c++/14.0.0" ignoring nonexistent directory "/usr/local/lib/../aarch64-linux-gnu/include/c++/14.0.0/aarch64-linux-gnu" ignoring nonexistent directory "/usr/local/lib/../aarch64-linux-gnu/include/c++/14.0.0/backward" ignoring nonexistent directory "/usr/local/lib/gcc/aarch64-linux-gnu/14.0.0/include" ignoring nonexistent directory "/usr/local/lib/gcc/aarch64-linux-gnu/14.0.0/include-fixed" ignoring nonexistent directory "/usr/local/lib/../aarch64-linux-gnu/sys-include" ignoring nonexistent directory "/usr/local/lib/../aarch64-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: ./include ./include-fixed /usr/include End of search list. Compiler executable checksum: 99072b28e2767f6b7a4ea027ec31d235 In file included from ppp.C:1: ./include/arm_neon.h:33:21: internal compiler error: Segmentation fault 33 | #pragma GCC aarch64 "arm_neon.h" | ^~~~~~~~~~~~ 0x1b247a2 crash_signal ../../gcc/toplev.cc:316 0x1efe6bd tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc/tree.cc:9004 0xddec4b tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../../gcc/tree.h:3767 0x1ef7e72 build_array_type_1(tree_node*, tree_node*, bool, bool, bool) ../../gcc/tree.cc:7344 0x1ef815d build_array_type(tree_node*, tree_node*, bool) ../../gcc/tree.cc:7378 0x1ef821d build_array_type_nelts(tree_node*, poly_int<2u, unsigned long>) ../../gcc/tree.cc:7395 0x21753d3 register_tuple_type ../../gcc/config/aarch64/aarch64-builtins.cc:1482 0x21759a8 handle_arm_neon_h() ../../gcc/config/aarch64/aarch64-builtins.cc:1555 0x1352ab5 aarch64_pragma_aarch64 ../../gcc/config/aarch64/aarch64-c.cc:351 0x13102d5 c_invoke_pragma_handler(unsigned int) ../../gcc/c-family/c-pragma.cc:1741 0x10fb1d7 cp_parser_pragma ../../gcc/cp/parser.cc:50704 0x109cc21 cp_parser_toplevel_declaration ../../gcc/cp/parser.cc:15392 0x1084a34 cp_parser_translation_unit ../../gcc/cp/parser.cc:5273 0x10fb45b c_parse_file() ../../gcc/cp/parser.cc:50798 0x1309a22 c_common_parse_file() ../../gcc/c-family/c-opts.cc:1301 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. This worked fine in r14-1. (gdb) p aarch64_simd_types[0] $1 = {type = Int8x8_t, name = 0x35d3297 "__Int8x8_t", mangle = 0x35d32a2 "10__Int8x8_t", itype = <ggc_freed 0x7fffea29f0a8>, eltype = <ggc_freed 0x7fffea14b2a0>, mode = E_V8QImode, q = qualifier_none} (gdb) p aarch64_simd_types[1] $2 = {type = Int8x16_t, name = 0x35d32af "__Int8x16_t", mangle = 0x35d32bb "11__Int8x16_t", itype = <ggc_freed 0x7fffea29f1f8>, eltype = <ggc_freed 0x7fffea14b2a0>, mode = E_V16QImode, q = qualifier_none} (gdb) p aarch64_simd_types[2] $3 = {type = Int16x4_t, name = 0x35d32c9 "__Int16x4_t", mangle = 0x35d32d5 "11__Int16x4_t", itype = <ggc_freed 0x7fffea29f348>, eltype = <ggc_freed 0x7fffea14b498>, mode = E_V4HImode, q = qualifier_none} etc.