http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56572
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-12-09
Component|c |tree-optimization
Version|trans-mem |4.9.0
Ever confirmed|0 |1
--- Comment #3 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
Confirmed. The problem is also present in 4.9.
The problem here is that the code removing nested transactions runs as part of
the execute_lower_tm() pass:
/* If there was absolutely nothing transaction related inside the
transaction, we may elide it. Likewise if this is a nested
transaction and does not contain an abort. */
if (this_state == 0
|| (!(this_state & GTMA_HAVE_ABORT) && outer_state != NULL))
...whereas inlining happens in a subsequent pass.