http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46269
--- Comment #4 from Richard Henderson <rth at gcc dot gnu.org> 2010-11-09 18:06:35 UTC --- Since updateBuildingSite is transaction_callable, not transaction_safe, we should handle this no matter how the other functions are annotated. When atomic_exchange_and_add is not annotated, we should transition to serial-irrevocable mode before the asm, just as we would do when calling any other unknown function. When atomic_exchange_and_add is annotated pure, we should believe it and not process anything inside. We do not currently support a general TM escape mechanism on a per- block basis, so the only way to really ignore stuff inside transaction_pure functions is to *not* inline them.