c++: don't preevaluate new-initializer
authorJason Merrill <jason@redhat.com>
Tue, 4 Jan 2022 19:39:52 +0000 (14:39 -0500)
committerJason Merrill <jason@redhat.com>
Fri, 7 Jan 2022 00:22:47 +0000 (19:22 -0500)
commitad64a821970ef5547d77ece22d302b0e599ae0d2
tree63583a9e484c17f68f91715ea8f318a956cf1e3c
parent11ce8d04f29417f2541d9b9bbfb54b3b26d7a90d
c++: don't preevaluate new-initializer

The preevaluation code was causing trouble with my fix for PR94041, and now
I see that it's actually wrong since P0145 was adopted for C++17, mandating
order of evaluation for many expressions that were previously unspecified.
I don't see a need to preserve the preevaluation code for older standard
modes.

gcc/cp/ChangeLog:

* init.c (build_new_1): Remove preevaluation code.

gcc/testsuite/ChangeLog:

* g++.old-deja/g++.martin/new1.C: Don't expect preeval.
* g++.dg/tree-ssa/stabilize1.C: Removed.
gcc/cp/init.c
gcc/testsuite/g++.dg/tree-ssa/stabilize1.C [deleted file]
gcc/testsuite/g++.old-deja/g++.martin/new1.C