[PR 56419/c++]: C++ front end silently drops transactions

Jason Merrill jason@redhat.com
Mon Feb 25 19:43:00 GMT 2013

On 02/22/2013 09:53 AM, Aldy Hernandez wrote:
> Frankly, I don't understand finish_transaction_stmt(), and why it sets
> TREE_SIDE_EFFECTS only if the [noexcept] clause is set.  I'm C++
> ignorant, but I would've thought the opposite to be true.

It's setting that flag on the MUST_NOT_THROW_EXPR.

> Anyways, I've fixed the problem by setting TREE_SIDE_EFFECTS if the
> transaction body has side effects.  Perhaps we should do this for
> build_transaction_expr() as well?

I would think managing the transaction boundaries would always have 
side-effects, no?  If that's correct, I'd set the flag unconditionally 
in begin_transaction_stmt and build_transaction_expr.


More information about the Gcc-patches mailing list