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).