On Mon, 2011-11-21 at 12:30 -0800, Richard Henderson wrote: > On 11/21/2011 12:27 PM, Torvald Riegel wrote: > > voidify_wrapper_expr didn't handle MUST_NOT_THROW_EXPR before, but was > > used by the C++ side gimplify function for MUST_NOT_THROW_EXPR. Handle > > it like other wrappers which have the inner part in operand 0. > > > > OK for trunk? > > Not ok. This is a c++ specific name used in a non-c++ file. > You should have seen a bootstrap failure.
I did not, interestingly. I also *assumed* that this wouldn't work and therefore sent you and Jason an email recentl asking how to best handle this. But then I just gave it a try and it seemed to do the job. So, again, what is the alternative? Quoting my last email: It still fails when combined with transaction expressions (noexcept-4.C and noexcept-1.C) because gimplify_must_not_throw_expr() calls voidify_wrapper_expr() on a MUST_NOT_THROW_EXPR which it doesn't know to be a wrapper. What's the cleanest way to solve that? Adding handling of MUST_NOT_THROW_EXPR inside voidify_... will include C++ stuff there, right? Or should there be a C++ version of voidify_...? Or something else? Torvald