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

Reply via email to