http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46269
Aldy Hernandez <aldyh at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |ASSIGNED AssignedTo|unassigned at gcc dot |aldyh at gcc dot gnu.org |gnu.org | --- Comment #3 from Aldy Hernandez <aldyh at gcc dot gnu.org> 2010-11-09 17:36:00 UTC --- The problem here is that for the inline function atomic_exchange_and_add(), the user is expecting the transaction_pure to be implied because the caller (BuildingCompletedEvent::BuildingCompletedEvent) is marked as transaction_pure. GCC doesn't see this implied transaction_pure, so we call ipa_tm_transform_clone() to make a clone of atomic_exchange_and_add. Later, when we try to expand the transaction in the atomic_exchange_and_add() clone, we fail in expand_block_tm() because we don't handle GIMPLE_ASM's. Richard, is the implied transaction_pure legal, and so we should handle it? Or should we exit gracefully in expand_block_tm() with an error about not supporting inline asms in a transaction?