https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89285
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Bisected that to the finish_id_expression change, reverting the penultimate and antepenultimate hunk of https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/cp/semantics.c?limit_changes=0&r1=267272&r2=267271&pathrev=267272 makes gcc trunk reject the #c4 testcase again and ICE again with C bar {} which should be valid. Ah, and likely that is the reason why the #c4 patch makes a difference, previously it was just a REINTERPRET_CAST_P NOP_EXPR around PARM_DECL, but now it is REINTERPRET_CAST_P NOP_EXPR around the location wrapper nop and cp_fold optimizes that away.