https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115486
Bug ID: 115486
Summary: ICE: Segfault while compiling partial template
specialization with expanded parameter pack of
function pointers
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: sqsvp at ya dot ru
Target Milestone: ---
Created attachment 58424
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58424&action=edit
preprocessed source
Segmentation fault while i try to compile partial template specialization
instantiated by pack of function pointers.
[ Minimal code required to reproduce ICE ]
struct s{
};
template <typename Value, typename... RetTypes, RetTypes... p(Value)>
struct s<p...>{
s();
};
int f(int) { return 0; }
int main(){
s<f>{};
}
[ How to reproduce ]
Just run g++ on preprocessed source
g++ a-main.ii
[ COMPILER OUTPUT + g++ -v output ]
Using built-in specs.
COLLECT_GCC=./gcc-pref/bin/g++
COLLECT_LTO_WRAPPER=/home/user/gcc-pref/libexec/gcc/x86_64-pc-linux-gnu/15.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure --prefix=/home/user/gcc-pref
--enable-languages=c,c++ --disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 15.0.0 20240613 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
'-march=x86-64' '-dumpdir' 'a-'
/home/user/gcc-pref/libexec/gcc/x86_64-pc-linux-gnu/15.0.0/cc1plus -E -quiet
-v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE main.c -mtune=generic
-march=x86-64 -fpch-preprocess -o a-main.ii
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/include-fixed/x86_64-linux-gnu"
ignoring nonexistent directory
"/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/../../../../include/c++/15.0.0
/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/../../../../include/c++/15.0.0/x86_64-pc-linux-gnu
/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/../../../../include/c++/15.0.0/backward
/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/include
/usr/local/include
/home/user/gcc-pref/include
/home/user/gcc-pref/lib/gcc/x86_64-pc-linux-gnu/15.0.0/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
'-march=x86-64' '-dumpdir' 'a-'
/home/user/gcc-pref/libexec/gcc/x86_64-pc-linux-gnu/15.0.0/cc1plus
-fpreprocessed a-main.ii -quiet -dumpdir a- -dumpbase main.c -dumpbase-ext .c
-mtune=generic -march=x86-64 -version -o a-main.s
GNU C++17 (GCC) version 15.0.0 20240613 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 15.0.0 20240613 (experimental), GMP version
6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version none
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: b4aa700f7c742174da2ce3cbb5be788e
main.c:15:1: internal compiler error: Segmentation fault
15 | }
| ^
0x136f5ef crash_signal
../../gcc/toplev.cc:319
0xe442a4 tree_check(tree_node const*, char const*, int, char const*, tree_code)
../../gcc/tree.h:3919
0xe442a4 symbol_table::decl_assembler_name_hash(tree_node const*)
../../gcc/symtab.cc:84
0xe48370 symtab_node::get_for_asmname(tree_node const*)
../../gcc/symtab.cc:1067
0xe4848d symtab_node::verify_base()
../../gcc/symtab.cc:1158
0xe5920d cgraph_node::verify_node()
../../gcc/cgraph.cc:3495
0xe49014 symtab_node::verify()
../../gcc/symtab.cc:1362
0xe4a207 symtab_node::verify_symtab_nodes()
../../gcc/symtab.cc:1482
0xe60030 symtab_node::checking_verify_symtab_nodes()
../../gcc/cgraph.h:689
0xe60030 symbol_table::compile()
../../gcc/cgraphunit.cc:2318
0xe62d57 symbol_table::compile()
../../gcc/cgraphunit.cc:2315
0xe62d57 symbol_table::finalize_compilation_unit()
../../gcc/cgraphunit.cc:2589
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.
[ Where reproduces ]
I got this bug on trunk build of g++
Bug reproduces until gcc 8.1
there is no ICE on version 7.5 of gcc, just compilation error