On 02/15/12 03:48, Richard Guenther wrote:
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.
That's why I also specified the calling function in the error message.
But I do agree that the message has the potential of confusing.
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...
You will hear no complaints from me. I'm tired of fixing the same bug
over and over.
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 G., can you explain the parenthesized comment. I'm not sure I
follow you.