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.

Reply via email to