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

Reply via email to