This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Handle MUST_NOT_THROW_EXPR in voidify_wrapper_expr.


On Mon, 2011-11-21 at 13:45 -0800, Richard Henderson wrote:
> On 11/21/2011 01:39 PM, Torvald Riegel wrote:
> > 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?
> 
> What's happening below gimplify_must_not_throw_expr?
> 
> That *ought* to be recursing into voidify_wrapper_expr and
> doing the right thing.

gimplify_must_not_throw_expr does call voidify_wrapper_expr, with the
assumption that the latter understands that MNTE is a wrapper, and will
change the code contained in the wrapper (so, change the MNTE itself).
I thought about changing voidify_wrapper_expr so that its first argument
is a pointer to a tree, so that one can voidify the contained/inner
stuff even when the caller has already skipped a wrapper (MNTE in our
case).  But this didn't seem to be clearer either.

Torvald


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]