https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82410
Bug ID: 82410 Summary: ICE in replace_placeholders_r Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: tomilovanatoliy at yandex dot ru Target Milestone: --- Internal compiler error on valid code. -std=c++14,17. Known to work in 5.*, 6.*. Known to not work in 7.1, 7.2, 8 HEAD. int main() { struct A {}; struct S { int & p; int x = p; operator A () { return {}; } }; int l; [] (A) {} (S{l}); } # Error message: prog.cc: In function 'int main()': prog.cc:13:20: internal compiler error: in replace_placeholders_r, at cp/tree.c:2795 [] (A) {} (S{l}); ^ 0x6952e9 replace_placeholders_r ../../gcc-7.2.0/gcc/cp/tree.c:2795 0xcf18b5 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-7.2.0/gcc/tree.c:11822 0xcf1e5e 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-7.2.0/gcc/tree.c:12139 0x69521b replace_placeholders_r ../../gcc-7.2.0/gcc/cp/tree.c:2825 0xcf18b5 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-7.2.0/gcc/tree.c:11822 0xcf1d34 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-7.2.0/gcc/tree.c:12049 0x6953a1 replace_placeholders(tree_node*, tree_node*, bool*) ../../gcc-7.2.0/gcc/cp/tree.c:2861 0x6c74ce cp_gimplify_init_expr ../../gcc-7.2.0/gcc/cp/cp-gimplify.c:500 0x6c74ce cp_gimplify_expr(tree_node**, gimple**, gimple**) ../../gcc-7.2.0/gcc/cp/cp-gimplify.c:659 0x8d4245 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) ../../gcc-7.2.0/gcc/gimplify.c:11149 0x8ddb1c gimplify_target_expr ../../gcc-7.2.0/gcc/gimplify.c:6418 0x8d54ce gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) ../../gcc-7.2.0/gcc/gimplify.c:11620 0x8d7b68 gimplify_stmt(tree_node**, gimple**) ../../gcc-7.2.0/gcc/gimplify.c:6497 0x8d828b gimplify_compound_expr ../../gcc-7.2.0/gcc/gimplify.c:5726 0x8d551f gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) ../../gcc-7.2.0/gcc/gimplify.c:11230 0x8dd324 gimplify_expr ../../gcc-7.2.0/gcc/gimplify.c:12241 0x8de6ce gimplify_call_expr ../../gcc-7.2.0/gcc/gimplify.c:3262 0x8d6137 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) ../../gcc-7.2.0/gcc/gimplify.c:11212 0x8d7b68 gimplify_stmt(tree_node**, gimple**) ../../gcc-7.2.0/gcc/gimplify.c:6497 0x8d6086 gimplify_cleanup_point_expr ../../gcc-7.2.0/gcc/gimplify.c:6241 Please submit a full bug report,