From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18004 invoked by alias); 5 Oct 2013 22:02:33 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 17979 invoked by uid 48); 5 Oct 2013 22:02:30 -0000 From: "reichelt at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/58636] New: [4.7/4.8/4.9 Regression] ICE with initializer_list and rvalue references Date: Sat, 05 Oct 2013 22:02:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: reichelt at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-10/txt/msg00306.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58636 Bug ID: 58636 Summary: [4.7/4.8/4.9 Regression] ICE with initializer_list and rvalue references Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: reichelt at gcc dot gnu.org The following similar invalid code snippets (compiled with "-std=c++11") trigger ICEs in different parts of the compiler: ======================================== #include int foo(std::initializer_list); int i = foo({ 0 }); ======================================== bug.cc:5:18: error: 'const' qualifiers cannot be applied to 'int&&' int i = foo({ 0 }); ^ In file included from bug.cc:1:0: .../include/c++/4.9.0/initializer_list: In instantiation of 'class std::initializer_list': bug.cc:5:18: required from here .../include/c++/4.9.0/initializer_list:54:26: error: forming pointer to reference type 'int&&' typedef const _E* iterator; ^ .../include/c++/4.9.0/initializer_list:55:26: error: forming pointer to reference type 'int&&' typedef const _E* const_iterator; ^ bug.cc: In function 'void __static_initialization_and_destruction_0(int, int)': bug.cc:5:18: internal compiler error: in gimplify_init_ctor_eval, at gimplify.c:3734 int i = foo({ 0 }); ^ 0x96977d gimplify_init_ctor_eval ../../gcc/gcc/gimplify.c:3734 0x96fbd4 gimplify_init_constructor ../../gcc/gcc/gimplify.c:4133 0x970a7e gimplify_modify_expr_rhs ../../gcc/gcc/gimplify.c:4518 0x970de4 gimplify_modify_expr ../../gcc/gcc/gimplify.c:4834 0x9661d5 gimplify_expr(tree_node**, gimple_statement_d**, gimple_statement_d**, bool (*)(tree_node*), int) ../../gcc/gcc/gimplify.c:7332 0x9691a6 gimplify_stmt(tree_node**, gimple_statement_d**) ../../gcc/gcc/gimplify.c:5709 0x964130 gimplify_and_add ../../gcc/gcc/gimplify.c:329 0x964130 internal_get_tmp_var ../../gcc/gcc/gimplify.c:594 0x964bae gimplify_expr(tree_node**, gimple_statement_d**, gimple_statement_d**, bool (*)(tree_node*), int) ../../gcc/gcc/gimplify.c:8163 0x96dec9 gimplify_call_expr ../../gcc/gcc/gimplify.c:2635 0x96567a gimplify_expr(tree_node**, gimple_statement_d**, gimple_statement_d**, bool (*)(tree_node*), int) ../../gcc/gcc/gimplify.c:7303 0x970f58 gimplify_modify_expr ../../gcc/gcc/gimplify.c:4875 0x9661d5 gimplify_expr(tree_node**, gimple_statement_d**, gimple_statement_d**, bool (*)(tree_node*), int) ../../gcc/gcc/gimplify.c:7332 0x9691a6 gimplify_stmt(tree_node**, gimple_statement_d**) ../../gcc/gcc/gimplify.c:5709 0x9656fe gimplify_cleanup_point_expr ../../gcc/gcc/gimplify.c:5485 0x9656fe gimplify_expr(tree_node**, gimple_statement_d**, gimple_statement_d**, bool (*)(tree_node*), int) ../../gcc/gcc/gimplify.c:7669 0x9691a6 gimplify_stmt(tree_node**, gimple_statement_d**) ../../gcc/gcc/gimplify.c:5709 0x964f9b gimplify_statement_list ../../gcc/gcc/gimplify.c:1525 0x964f9b gimplify_expr(tree_node**, gimple_statement_d**, gimple_statement_d**, bool (*)(tree_node*), int) ../../gcc/gcc/gimplify.c:7721 0x9691a6 gimplify_stmt(tree_node**, gimple_statement_d**) ../../gcc/gcc/gimplify.c:5709 Please submit a full bug report, [etc.] =========================================== #include auto i = std::initializer_list{ 0 }; =========================================== In file included from bug.cc:1:0: .../include/c++/4.9.0/initializer_list: In instantiation of 'class std::initializer_list': bug.cc:3:42: required from here .../include/c++/4.9.0/initializer_list:54:26: error: forming pointer to reference type 'int&&' typedef const _E* iterator; ^ .../include/c++/4.9.0/initializer_list:55:26: error: forming pointer to reference type 'int&&' typedef const _E* const_iterator; ^ bug.cc:3:42: error: 'const' qualifiers cannot be applied to 'int&&' auto i = std::initializer_list{ 0 }; ^ bug.cc:3:42: internal compiler error: in split_nonconstant_init_1, at cp/typeck2.c:597 0x5dd883 split_nonconstant_init_1 ../../gcc/gcc/cp/typeck2.c:597 0x5e0f12 split_nonconstant_init ../../gcc/gcc/cp/typeck2.c:692 0x5e0f12 store_init_value(tree_node*, tree_node*, vec**, int) ../../gcc/gcc/cp/typeck2.c:810 0x557478 check_initializer ../../gcc/gcc/cp/decl.c:5728 0x56a35c cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) ../../gcc/gcc/cp/decl.c:6347 0x651267 cp_parser_init_declarator ../../gcc/gcc/cp/parser.c:16577 0x65198f cp_parser_simple_declaration ../../gcc/gcc/cp/parser.c:10995 0x653810 cp_parser_block_declaration ../../gcc/gcc/cp/parser.c:10876 0x65c83e cp_parser_declaration ../../gcc/gcc/cp/parser.c:10773 0x65b5aa cp_parser_declaration_seq_opt ../../gcc/gcc/cp/parser.c:10659 0x65ce76 cp_parser_translation_unit ../../gcc/gcc/cp/parser.c:3939 0x65ce76 c_parse_file() ../../gcc/gcc/cp/parser.c:28911 0x7708b3 c_common_parse_file() ../../gcc/gcc/c-family/c-opts.c:1046 Please submit a full bug report, [etc.]