On 3/9/22 14:35, Roger Sayle wrote:
Hi Jason,
Very many thanks for your reviews/approvals of these ICE-on-invalid-code fixes.
+ if (TREE_VALUE (new_parm) != error_mark_node)
+ DECL_VIRTUAL_P (TREE_VALUE (new_parm)) = true;
Hmm, I wonder about returning early if there was an error, but this is fine as
is.
The challenge here is the need to perform "current_binding_level = entry_scope;"
required to restore the parser state before returning. Now that the parser is
written in C++, we could (in theory) make more use of destructors to
automatically
restore/pop state, making it safe(r) to just "return error_mark_node"
immediately
in more places.
Yes, e.g.
auto ov = make_temp_override (current_binding_level);
+/* { dg-options "-O2" } */
This also seems unneeded for this test.
Doh! Force of habit (from working in the middle-end). Consider this removed
from all the test cases below.
Is there any chance I could ask you to also look at these (that probably slipped
through the net), though PR 84964 might require a nod from a middle-end
maintainer.
PR c++/39751:
https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590951.html
PR c++/84964:
https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590961.html
PR c++/95999:
https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590653.html
PR c++/96442:
https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590716.html
Will do.
Jason