This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: What tree flags tell me a variable is local?


Daniel Berlin <dberlin@dberlin.org> writes:

> I know you can do it with decl_function_context, but I'm trying to
> avoid using it, because it's too expensive in PTA due to call overhead
> (Any time a query is made, we need to figure out whether they are
> querying about a global or not, so we end up calling it millions of
> times).
> 
> Thus, i'm wondering if there is some combination of tree flags i can
> rely on to always be correct.
> 
> Currently, I check DECL_CONTEXT, and iff it's a FUNCTION_DECL, we say
> it's local, otherwise, we call decl_function_context and see if it
> returns NULL.
> 
> 
> Is there a better way?

I presume that by 'local' you mean 'inside a function scope', not
'file-local' or 'automatic'?

No, there's no better way.

Why do you want to do this?  I can't imagine what it might make a
difference for; surely

extern foo;
int bar(void) { ... }

is not different to

int bar(void) {
  extern foo;
  ...
}

in any meaningful way.

-- 
- Geoffrey Keating <geoffk@geoffk.org>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]