https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67247
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-08-17 CC| |trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 tmp % cat la.ii template <typename _Tp> _Tp forward (int); template <class F1, class F2> auto operator>> (F1, F2 f2) { return f2 (0); } template <class F1, class F2> decltype (0) operator<< (F1 f1, F2) { f1 (0); } auto divide (int, int) { 0 >> [](auto... args1) { return [&](auto... args2) { divide (forward<decltype (args1)> (args1)..., args2...); }; } << 0; } markus@x4 tmp % g++ -c la.ii la.ii: In instantiation of ‘divide(int, int)::<lambda(auto:1 ...)>::<lambda(auto:2 ...)> [with auto:2 = {int}; auto:1 = {int}]’: la.ii:13:6: required from ‘int operator<<(F1, F2) [with F1 = divide(int, int)::<lambda(auto:1 ...)> [with auto:1 = {int}]::<lambda(auto:2 ...)>; F2 = int]’ la.ii:24:8: required from here la.ii:22:14: internal compiler error: Segmentation fault divide (forward<decltype (args1)> (args1)..., args2...); ^ 0xc795ef crash_signal ../../gcc/gcc/toplev.c:352 0x7f7dae93e70f ??? /var/tmp/glibc/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0x5c1525 resolve_args ../../gcc/gcc/cp/call.c:3942 0x5d8ee9 build_new_function_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, int) ../../gcc/gcc/cp/call.c:4052 0x7666d8 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ../../gcc/gcc/cp/semantics.c:2391 0x643032 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:15860 0x633ea8 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15029 0x632d41 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14440 0x634b0f tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14612 0x633103 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14426 0x634b0f tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14612 0x631815 instantiate_decl(tree_node*, int, bool) ../../gcc/gcc/cp/pt.c:21154 0x6b6e42 mark_used(tree_node*, int) ../../gcc/gcc/cp/decl2.c:5101 0x5c9f2a build_over_call ../../gcc/gcc/cp/call.c:7569 0x5d9cf1 build_op_call_1 ../../gcc/gcc/cp/call.c:4358 0x5d9cf1 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ../../gcc/gcc/cp/call.c:4381 0x7668e8 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) ../../gcc/gcc/cp/semantics.c:2408 0x643032 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:15860 0x633ea8 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:15029 0x632d41 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) ../../gcc/gcc/cp/pt.c:14440 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions.