https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78774
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |msebor at gcc dot gnu.org
Summary|[6 Regression] ICE in |[6/7 Regression] ICE in
|constexpr string literals |constexpr string literals
|and templates |and templates
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Markus Trippelsdorf from comment #2)
> This variant also ICEs on trunk:
>
> % cat cr.ii
> template <int> struct ops {
> template <int> struct A;
> template <int *Ptr> using explode = typename A<*Ptr>::join;
> };
> template <typename Ts> ops<'\0'>::explode<Ts::join> a;
>
> % g++ -c cr.ii
> cr.ii: In substitution of ‘template<int <anonymous> > template<int* Ptr>
> using explode = typename ops<<anonymous> >::A<(* Ptr)>::join [with int* Ptr
> = Ts:: join; int <anonymous> = 0]’:
> cr.ii:5:51: required from here
> cr.ii:3:61: internal compiler error: Segmentation fault
> template <int *Ptr> using explode = typename A<*Ptr>::join;
> ^
> 0xd5c0ef crash_signal
> /home/markus/gcc/gcc/toplev.c:333
> 0x7f0b4d78f12f ???
>
> /home/markus/glibc/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
> 0x687912 convert_template_argument
> /home/markus/gcc/gcc/cp/pt.c:7382
> 0x68959b coerce_template_parms
> /home/markus/gcc/gcc/cp/pt.c:7821
> 0x68acb3 coerce_innermost_template_parms
> /home/markus/gcc/gcc/cp/pt.c:7912
> 0x68b67a lookup_template_class_1
> /home/markus/gcc/gcc/cp/pt.c:8393
> 0x68b67a lookup_template_class(tree_node*, tree_node*, tree_node*,
> tree_node*, int, int)
> /home/markus/gcc/gcc/cp/pt.c:8738
> 0x68f1d1 tsubst_aggr_type
> /home/markus/gcc/gcc/cp/pt.c:11619
> 0x67a02e tsubst(tree_node*, tree_node*, int, tree_node*)
> /home/markus/gcc/gcc/cp/pt.c:13633
> 0x674f60 tsubst_decl
> /home/markus/gcc/gcc/cp/pt.c:12506
> 0x67a807 tsubst(tree_node*, tree_node*, int, tree_node*)
> /home/markus/gcc/gcc/cp/pt.c:13011
> 0x69b50f instantiate_template_1
> /home/markus/gcc/gcc/cp/pt.c:17806
> 0x69b50f instantiate_template(tree_node*, tree_node*, int)
> /home/markus/gcc/gcc/cp/pt.c:17862
> 0x67ab7c instantiate_alias_template
> /home/markus/gcc/gcc/cp/pt.c:17892
> 0x67ab7c tsubst(tree_node*, tree_node*, int, tree_node*)
> /home/markus/gcc/gcc/cp/pt.c:13038
> 0x68c489 lookup_template_class_1
> /home/markus/gcc/gcc/cp/pt.c:8487
> 0x68c489 lookup_template_class(tree_node*, tree_node*, tree_node*,
> tree_node*, int, int)
> /home/markus/gcc/gcc/cp/pt.c:8738
> 0x7aa96d finish_template_type(tree_node*, tree_node*, int)
> /home/markus/gcc/gcc/cp/semantics.c:3144
> 0x72455d cp_parser_template_id
> /home/markus/gcc/gcc/cp/parser.c:15464
> 0x7247dd cp_parser_class_name
> /home/markus/gcc/gcc/cp/parser.c:21876
Which started with r227458.