Implement P1002R1, Try-catch blocks in constexpr functions PR c++/89513
authorJakub Jelinek <jakub@redhat.com>
Fri, 1 Mar 2019 14:20:03 +0000 (15:20 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 1 Mar 2019 14:20:03 +0000 (15:20 +0100)
commit1259cb6d0034f36cce26ca8fd3d22d40bafce04a
treef0b32a4e2a747b9f23167114d3bd16b4a456e95d
parentc5effe9673bd266887b5c4cb968cce61ce137ca1
Implement P1002R1, Try-catch blocks in constexpr functions PR c++/89513

Implement P1002R1, Try-catch blocks in constexpr functions
PR c++/89513
* parser.c (cp_parser_ctor_initializer_opt_and_function_body):
Diagnose constexpr ctor or function with function-try-block with
pedwarn for c++17 and earlier.  Formatting fix.
(cp_parser_try_block): Use pedwarn instead of error and only for
c++17 and earlier when try block appears in constexpr function.
* constexpr.c (build_constexpr_constructor_member_initializers):
Handle TRY_BLOCK here instead of erroring on it.

* g++.dg/cpp2a/constexpr-try1.C: New test.
* g++.dg/cpp2a/constexpr-try2.C: New test.
* g++.dg/cpp2a/constexpr-try3.C: New test.
* g++.dg/cpp2a/constexpr-try4.C: New test.
* g++.dg/cpp2a/constexpr-try5.C: New test.
* g++.dg/cpp0x/constexpr-ctor10.C: Don't expect error for C++2a.

From-SVN: r269314
gcc/cp/ChangeLog
gcc/cp/constexpr.c
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/constexpr-ctor10.C
gcc/testsuite/g++.dg/cpp2a/constexpr-try1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C [new file with mode: 0644]