https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82878
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Known to work| |6.4.1 Keywords| |needs-bisection Last reconfirmed| |2017-11-07 Component|c++ |middle-end CC| |trippels at gcc dot gnu.org Ever confirmed|0 |1 Summary|ICE in assign_temp, at |[7/8 Regression] ICE in |function.c:968 when using |assign_temp, at |optimization |function.c:968 when using | |optimization --- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- % cat fd_array.ii struct __shared_count { ~__shared_count(); }; struct A { operator int(); __shared_count _M_refcount; }; void fn1() { void (*seek)(A) = [](A) { fn1(); }; A fdp; if (auto ffd = fdp) seek(ffd); } % g++ -c fd_array.ii -O during RTL pass: expand fd_array.ii: In function ‘void fn1()’: fd_array.ii:9:36: internal compiler error: in assign_temp, at function.c:970 void (*seek)(A) = [](A) { fn1(); }; ^ 0xac2b3e assign_temp(tree_node*, int, int) /home/markus/gcc/gcc/function.c:970 0x9272bb initialize_argument_information /home/markus/gcc/gcc/calls.c:1820 0x92839a expand_call(tree_node*, rtx_def*, int) /home/markus/gcc/gcc/calls.c:3261 0xa5839d expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/markus/gcc/gcc/expr.c:10853 0x93f19b expand_expr /home/markus/gcc/gcc/expr.h:276 0x93f19b expand_call_stmt /home/markus/gcc/gcc/cfgexpand.c:2674 0x93f19b expand_gimple_stmt_1 /home/markus/gcc/gcc/cfgexpand.c:3608 0x93f19b expand_gimple_stmt /home/markus/gcc/gcc/cfgexpand.c:3774 0x9409b7 expand_gimple_basic_block /home/markus/gcc/gcc/cfgexpand.c:5779 0x946ed6 execute /home/markus/gcc/gcc/cfgexpand.c:6385