[Bug c++/87152] internal compiler error: in tsubst_copy, at cp/pt.c:15484
mpolacek at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 7 14:13:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87152
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Author: mpolacek
Date: Fri Sep 7 14:12:48 2018
New Revision: 264158
URL: https://gcc.gnu.org/viewcvs?rev=264158&root=gcc&view=rev
Log:
PR c++/87152 - range-based for loops with initializer broken in
templates.
* constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
Recur into RANGE_FOR_INIT_STMT.
* cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
* cp-tree.h (RANGE_FOR_INIT_STMT): Define.
* dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
RANGE_FOR_INIT_STMT.
* pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
RANGE_FOR_INIT_STMT.
* semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
Do put the init statement in RANGE_FOR_INIT_STMT.
(finish_range_for_decl): Pop it for templates.
* g++.dg/cpp2a/range-for11.C: New test.
* g++.dg/cpp2a/range-for12.C: New test.
* g++.dg/cpp2a/range-for13.C: New test.
* g++.dg/cpp2a/range-for14.C: New test.
* g++.dg/cpp2a/range-for15.C: New test.
* g++.dg/cpp2a/range-for16.C: New test.
* g++.dg/cpp2a/range-for17.C: New test.
* g++.dg/cpp2a/range-for18.C: New test.
* g++.dg/parse/error61.C (foo): Adjust dg-error.
Added:
trunk/gcc/testsuite/g++.dg/cpp2a/range-for11.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for12.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for13.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for14.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for15.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for16.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for17.C
trunk/gcc/testsuite/g++.dg/cpp2a/range-for18.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/constexpr.c
trunk/gcc/cp/cp-tree.def
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/dump.c
trunk/gcc/cp/pt.c
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/parse/error61.C
More information about the Gcc-bugs
mailing list