On Tue, Feb 14, 2012 at 6:47 PM, Richard Henderson <r...@redhat.com> wrote: > On 02/14/2012 08:46 AM, Aldy Hernandez wrote: >> The call to ipa_tm_diagnose_tm_safe() does nothing because there are no >> longer any calls in the function, since the function call has been inlined: >> >> f () >> { >> <bb 2>: >> __asm__ __volatile__(""); >> return; >> >> } >> >> Perhaps we could issue the error when we notice the GIMPLE_ASM while >> scanning for irrevocable blocks earlier. The attached patch does so, and >> fixes the PR. >> >> What am I missing, cause I *know* there's a rat's nest somewhere. > > Ug. > > Which means that the error message is all too likely simply be confusing > rather than anything else, since the asm isn't lexically present in the > transaction. > > I wonder, not for the first time, if we shouldn't simply turn off early > inlining with TM, or at least of and into tm-related functions, such as > this. I assume that the IPA inlining pass would take up the slack...
Hmm. I think you rather want to teach local_pure_const about TM properties you want to know and have them propagated properly (of course unless pure/const which is about optimization and has an easy fallback default yours wouldn't have that - you'd have to assume the callee contains an invalid asm ...) Richard. > > r~