On 02/15/12 11:32, Jakub Jelinek wrote:
On Wed, Feb 15, 2012 at 09:29:18AM -0800, Richard Henderson wrote:
On 02/15/2012 01:48 AM, Richard Guenther wrote:
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 ...)
That's more or less what we do ourselves during the tm ipa pass.
The trouble we have here is merely one of diagnostics. The user
has written "transaction safe" and it's now our job to tell him
when he's done something that's not transaction safe.
The unfortunate thing of diagnostics is you'd like to be able to
tell the user what they did wrong at the source level, not after
10 levels of inlining.
And given that pass_local_pure_const still runs after pass_early_inline,
doing anything in there doesn't really help the problem at all.
Use %K in error/warning fmt string, then the diagnostic will include the
full virtual backtrace.
Jakub
Hmmm, isn't %K for trees? We're talking gimple, and FUNCTION_DECLs,
which don't have a TREE_BLOCK, here.