https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68309

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-11-12
                 CC|                            |trippels at gcc dot gnu.org
            Version|4.9.1                       |6.0
            Summary|[C++14] Expanding a         |[5/6 Regression] ICE:
                   |captured parameter pack     |Segmentation fault
                   |with                        |
                   |std::forward<decltype(args) |
                   |>(args) fails.              |
     Ever confirmed|0                           |1

--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
markus@x4 /tmp % cat f.cpp
#include <initializer_list>
#include <utility>
using namespace std;
template <typename... Ts> void print(Ts... args) {
  [&] { auto _ = {forward<decltype(args)>(args)...}; };
}
int main() { print(5.2); }

markus@x4 /tmp % g++ -std=c++14 -c f.cpp
f.cpp: In instantiation of ‘print(Ts ...)::<lambda()> [with Ts = {double}]’:
f.cpp:5:43:   required from ‘struct print(Ts ...) [with Ts =
{double}]::<lambda()>’
f.cpp:5:3:   required from ‘void print(Ts ...) [with Ts = {double}]’
f.cpp:7:23:   required from here
f.cpp:5:51: internal compiler error: Segmentation fault
   [&] { auto _ = {forward<decltype(args)>(args)...}; };
                                                   ^

0xcbe5cf crash_signal
        ../../gcc/gcc/toplev.c:336
0x7fd9373268af ???
       
/home/markus/glibc/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0
0x621cea maybe_adjust_types_for_deduction
        ../../gcc/gcc/cp/pt.c:17717
0x66dc29 unify
        ../../gcc/gcc/cp/pt.c:19189
0x669fe5 unify_one_argument
        ../../gcc/gcc/cp/pt.c:18020
0x66c6bb type_unification_real
        ../../gcc/gcc/cp/pt.c:18091
0x67f453 do_auto_deduction(tree_node*, tree_node*, tree_node*, int,
auto_deduction_context)
        ../../gcc/gcc/cp/pt.c:23679
0x610954 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
        ../../gcc/gcc/cp/decl.c:6544
0x643e58 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:15006
0x6405d3 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:15080
0x6400e4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:14894
0x6405d3 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:15080
0x63e097 instantiate_decl(tree_node*, int, bool)
        ../../gcc/gcc/cp/pt.c:21736
0x6818cf instantiate_class_template_1
        ../../gcc/gcc/cp/pt.c:10168
0x6818cf instantiate_class_template(tree_node*)
        ../../gcc/gcc/cp/pt.c:10238
0x72887b complete_type(tree_node*)
        ../../gcc/gcc/cp/typeck.c:131
0x64c1a4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../gcc/gcc/cp/pt.c:16901
0x64141e tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:15584
0x63f650 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:14908
0x6400e4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../gcc/gcc/cp/pt.c:14894

Reply via email to