[Bug c++/85125] constant expression with const_cast UB does not emit error
john at mcfarlane dot name
gcc-bugzilla@gcc.gnu.org
Sun Sep 1 18:25:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85125
--- Comment #7 from John McFarlane <john at mcfarlane dot name> ---
Confirmed. Thank you!
On Mon, 19 Aug 2019 at 15:02, mpolacek at gcc dot gnu.org <
gcc-bugzilla@gcc.gnu.org> wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85125
>
> Marek Polacek <mpolacek at gcc dot gnu.org> changed:
>
> What |Removed |Added
>
> ----------------------------------------------------------------------------
> Status|ASSIGNED |RESOLVED
> Resolution|--- |FIXED
>
> --- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
> Done for 10.1 via:
>
> Author: mpolacek
> Date: Mon Aug 19 13:59:13 2019
> New Revision: 274671
>
> URL: https://gcc.gnu.org/viewcvs?rev=274671&root=gcc&view=rev
> Log:
> PR c++/91264 - detect modifying const objects in constexpr.
> * constexpr.c (modifying_const_object_error): New function.
> (cxx_eval_call_expression): Set TREE_READONLY on a CONSTRUCTOR of
> a const-qualified object after it's been fully constructed.
> (modifying_const_object_p): New function.
> (cxx_eval_store_expression): Detect modifying a const object
> during constant expression evaluation.
> (cxx_eval_increment_expression): Use a better location when
> building
> up the store.
> (cxx_eval_constant_expression) <case DECL_EXPR>: Mark a constant
> object's constructor TREE_READONLY.
>
> * g++.dg/cpp1y/constexpr-tracking-const1.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const2.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const3.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const4.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const5.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const6.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const7.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const8.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const9.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const10.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const11.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const12.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const13.C: New test.
> * g++.dg/cpp1y/constexpr-tracking-const14.C: New test.
>
> Added:
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const1.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const10.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const11.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const12.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const13.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const14.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const2.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const3.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const4.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const5.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const6.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const7.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const8.C
> trunk/gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const9.C
> Modified:
> trunk/gcc/cp/ChangeLog
> trunk/gcc/cp/constexpr.c
> trunk/gcc/testsuite/ChangeLog
>
> --
> You are receiving this mail because:
> You are on the CC list for the bug.
> You reported the bug.
More information about the Gcc-bugs
mailing list