On Wed, Apr 10, 2024 at 06:43:02PM +0200, Richard Biener wrote: > The following fixes a mismatch in COMPOUND_EXPR handling in > tsubst_expr vs tsubst_stmt where the latter allows a stmt in > operand zero but the former doesn't. This makes a difference > for the case at hand because when the COMPOUND_EXPR is wrapped > inside an ANNOTATE_EXPR it gets handled by tsubst_expr and when > not, tsubst_stmt successfully handles it and the contained > DECL_EXPR in operand zero. > > The following makes handling of COMPOUND_EXPR in tsubst_expr > consistent with that of tsubst_stmt for the operand that doesn't > specify the result and thus the reason we choose either or the > other for substing. > > Bootstrapped and tested on x86_64-unknown-linux-gnu, OK? > > Thanks, > Richard. > > PR c++/114409 > gcc/cp/ > * pt.cc (tsubst_expr): Recurse to COMPOUND_EXPR operand > zero using tsubst_stmt, when that returns NULL return > the subst operand one, mimicing what tsubst_stmt does. > > gcc/testsuite/ > * g++.dg/pr114409.C: New testcase.
I've posted https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114409#c16 for this already and Jason agreed to that version, so I just have to test it tonight: https://gcc.gnu.org/pipermail/gcc-patches/2024-April/649165.html Jakub