https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68122
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- There are lots of internal functions in GCC 6 (older versions had fewer). Many of them are ECF_CONST, which is also treated like txn_pure, right? Other than that, e.g. the remaining UBSAN* handlers are pretty much just report some diagnostics and either terminate the program or return, but in a valid program they should never be called. If we treat them as ECF_TM_PURE, that would worst case mean the diagnostics could be printed multiple times for the same spot in a transaction, if the transaction is restarted, right? Most of them are not reporting the same diagnostics for the same source code location, so I suppose it would be no harm to treat them as tm pure. Just look at internal-fn.def.