public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/113170] New: ICE: Segfault (template template parameter, alias template, default value)
@ 2023-12-29 13:12 iamkirkezz at gmail dot com
2023-12-29 13:17 ` [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument) iamkirkezz at gmail dot com
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: iamkirkezz at gmail dot com @ 2023-12-29 13:12 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113170
Bug ID: 113170
Summary: ICE: Segfault (template template parameter, alias
template, default value)
Product: gcc
Version: 13.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: iamkirkezz at gmail dot com
Target Milestone: ---
Created attachment 56964
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56964&action=edit
g++ main.cpp -v output
| gcc version: 13.2.1 20230801
| system type: x86_64-pc-linux-gnu
| gcc options:
"""
/build/gcc/src/gcc/configure
--enable-languages=ada,c,c++,d,fortran,go,lto,objc,obj-c++ --enable-bootstrap
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/
--with-build-config=bootstrap-lto --with-linker-hash-style=gnu
--with-system-zlib --enable-__cxa_atexit --enable-cet=auto
--enable-checking=release --enable-clocale=gnu --enable-default-pie
--enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object
--enable-libstdcxx-backtrace --enable-link-serialization=1
--enable-linker-build-id --enable-lto --enable-multilib --enable-plugin
--enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch
--disable-werror
"""
| the complete command line: g++ main.cpp
| gcc output (for the full `g++ -v` output, see the attachment):
"""
g++: internal compiler error: Segmentation fault signal terminated program
cc1plus
"""
| source file (https://godbolt.org/z/cKTGrn1sP):
"""
template<typename T, template<typename> typename TT>
struct S;
template<typename T = int, template<typename> typename TT = S>
struct SSS {};
template<typename T = int, template<typename> typename TT = SSS>
struct S {};
template<template<typename> typename TT = S, typename T = int>
using SS = S<T, TT>;
int main() {
SS<S, int> ss;
}
"""
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument)
2023-12-29 13:12 [Bug c++/113170] New: ICE: Segfault (template template parameter, alias template, default value) iamkirkezz at gmail dot com
@ 2023-12-29 13:17 ` iamkirkezz at gmail dot com
2023-12-31 8:28 ` pinskia at gcc dot gnu.org
2023-12-31 8:32 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: iamkirkezz at gmail dot com @ 2023-12-29 13:17 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113170
--- Comment #1 from Kirkezz <iamkirkezz at gmail dot com> ---
I was experimenting with the template template parameters, and ICE occured.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument)
2023-12-29 13:12 [Bug c++/113170] New: ICE: Segfault (template template parameter, alias template, default value) iamkirkezz at gmail dot com
2023-12-29 13:17 ` [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument) iamkirkezz at gmail dot com
@ 2023-12-31 8:28 ` pinskia at gcc dot gnu.org
2023-12-31 8:32 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-12-31 8:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113170
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Keywords| |ice-on-invalid-code
Last reconfirmed| |2023-12-31
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
```
#5 0x0000000000c4dd6b in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba4800, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/cp/pt.cc:9115
#6 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#7 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba5898, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#8 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba47e0, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#9 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#10 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba5870, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#11 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba47c0, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#12 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#13 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba5848, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#14 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba47a0, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#15 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#16 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba5820, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#17 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba4780, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#18 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#19 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba57f8, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#20 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba4760, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#21 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#22 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba57d0, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#23 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba4740, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#24 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#25 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba57a8, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#26 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba4720, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#27 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#28 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba5780, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#29 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba4700, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#30 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#31 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba5758, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#32 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba46e0, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#33 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#34 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba5730, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#35 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba46c0, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#36 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#37 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba5708, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#38 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba46a0, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#39 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#40 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba56e0, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#41 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba4680, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#42 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#43 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7180,
arg=0x7ffff7fb7100, args=0x7ffff6ba56b8, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#44 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff7309af0,
args=0x7ffff6ba4660, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#45 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
#46 0x0000000000c4c375 in convert_template_argument (parm=0x7ffff7fb7080,
arg=0x7ffff7fb7200, args=0x7ffff6ba5690, complain=0, i=1, in_decl=0x0) at
../../gcc/cp/pt.cc:8653
#47 0x0000000000c4e294 in coerce_template_parms (parms=0x7ffff73097f8,
args=0x7ffff6ba4640, in_decl=0x0, complain=0, require_all_args=true) at
../../gcc/tree.h:3613
#48 0x0000000000c74bdb in coerce_template_template_parms (parm_tmpl=<optimized
out>, arg_tmpl=<optimized out>, complain=0, in_decl=0x0, outer_args=<optimized
out>) at ../../gcc/cp/pt.cc:8211
```
Confirmed. Looks like an infinite loop between coerce_template_parms and
coerce_template_template_parms here.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument)
2023-12-29 13:12 [Bug c++/113170] New: ICE: Segfault (template template parameter, alias template, default value) iamkirkezz at gmail dot com
2023-12-29 13:17 ` [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument) iamkirkezz at gmail dot com
2023-12-31 8:28 ` pinskia at gcc dot gnu.org
@ 2023-12-31 8:32 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-12-31 8:32 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113170
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|ice-on-invalid-code |
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am not 100% sure this is valid or not; I suspect it is not valid but
MSVC looks like goes into an similar infinite recusion too.
While clang errors out:
```
<source>:11:8: error: template template argument has different template
parameters than its corresponding template template parameter
11 | SS<S, int> ss;
| ^
<source>:6:1: note: too many template parameters in template template argument
6 | template<typename T = int, template<typename> typename TT = SSS>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:8:10: note: previous template template parameter is here
8 | template<template<typename> typename TT = S, typename T = int>
| ^~~~~~~~~~~~~~~~~~
```
But that error message seems wrong.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-31 8:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-29 13:12 [Bug c++/113170] New: ICE: Segfault (template template parameter, alias template, default value) iamkirkezz at gmail dot com
2023-12-29 13:17 ` [Bug c++/113170] ICE: Segfault (template template parameter, alias template, default template argument) iamkirkezz at gmail dot com
2023-12-31 8:28 ` pinskia at gcc dot gnu.org
2023-12-31 8:32 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).