https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111274
--- Comment #11 from sandra at gcc dot gnu.org --- OK, I've been digging around in the code. do_poplevel() only fills in BIND_EXPR_BLOCK if stmts_are_full_exprs_p() is true. I haven't figured out the control flow that affects the latter predicate or how the vars in a BIND_EXPR end up associated with some other block, but I understand what a full-expression is in C++, so I think I can go off and come up with some test cases to exercise that and figure out what the right thing to do with the tree coming in to this restructuring is.