This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/85148] New: [6/7/8 Regression] ICE with NSDMI and this pointer
- From: "reichelt at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 31 Mar 2018 21:50:54 +0000
- Subject: [Bug c++/85148] New: [6/7/8 Regression] ICE with NSDMI and this pointer
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85148
Bug ID: 85148
Summary: [6/7/8 Regression] ICE with NSDMI and this pointer
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: reichelt at gcc dot gnu.org
Target Milestone: ---
The following valid code snippet triggers an ICE since GCC 5.1.0
(it was wrongly rejected in GCC 4.9.4):
=====================================
template<typename T> struct A
{
T x[1]{(__PTRDIFF_TYPE__)this};
};
void foo()
{
A<A<__PTRDIFF_TYPE__>> a{};
}
=====================================
bug.cc: In function 'void foo()':
bug.cc:8:28: internal compiler error: in replace_placeholders_r, at
cp/tree.c:3148
A<A<__PTRDIFF_TYPE__>> a{};
^
0x667871 replace_placeholders_r
../../gcc/gcc/cp/tree.c:3148
0x116564b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
../../gcc/gcc/tree.c:11387
0x9d03b0 replace_placeholders_r
../../gcc/gcc/cp/tree.c:3188
0x116564b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
../../gcc/gcc/tree.c:11387
0x9d03b0 replace_placeholders_r
../../gcc/gcc/cp/tree.c:3188
0x116564b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
../../gcc/gcc/tree.c:11387
0x9d03b0 replace_placeholders_r
../../gcc/gcc/cp/tree.c:3188
0x116564b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
../../gcc/gcc/tree.c:11387
0x9d03b0 replace_placeholders_r
../../gcc/gcc/cp/tree.c:3188
0x116564b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
../../gcc/gcc/tree.c:11387
0x9d51d1 replace_placeholders(tree_node*, tree_node*, bool*)
../../gcc/gcc/cp/tree.c:3226
0x9f4bb3 store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
../../gcc/gcc/cp/typeck2.c:851
0x887daa check_initializer
../../gcc/gcc/cp/decl.c:6469
0x89ffdc cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
../../gcc/gcc/cp/decl.c:7127
0x93c97b cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:19741
0x943e28 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:13059
0x944c38 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:12884
0x945669 cp_parser_declaration_statement
../../gcc/gcc/cp/parser.c:12478
0x923a73 cp_parser_statement
../../gcc/gcc/cp/parser.c:10927
0x9249e0 cp_parser_statement_seq_opt
../../gcc/gcc/cp/parser.c:11276
Please submit a full bug report, [etc.]