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. > > +/* { 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 Very many thanks again for your help/reviews. Much appreciated. Roger --