Hi, On Sat, 3 Sep 2011, Richard Guenther wrote:
> >> As I feared the call to get_var_ann in set_is_used right now really > >> is still needed, privatizing it hence isn't that straight forward. > > > > After pondering I concluded that it's not necessary to call > > set_is_used for variables without var annotation. Those won't be in > > referenced_vars (or local_decls) and therefore also won't be removed > > from those lists no matter how hard we try. > > > > Regstrapped on x86_64-linux (without Ada). Okay for trunk? > > No. We call mark_all_vars_used on trees contained in GIMPLE non-debug > statements. All vars we can reach that way _have_ to be in the list of > referenced vars. Sometimes global variables (non-auto vars with context != cfun) can be missing from referenced_vars. In the case where we hit bugs with this it's the non-local variables generated for profile counters. I can add the respective add_referenced_var calls for that, but I'm not sure I see the point. That of course comes back to our old discussion for what purposes referenced_vars actually is used. I looked at all users and I think that the global counters missing from referenced_vars is harmless. OTOH it's a nice invariant that can actually be checked for (that all reachable vars whatsoever have to be in referenced_vars), so I'm going to do that. > That they are not is the bug. So - can you investigate > which var doesn't have an annotation an why it isn't in referenced vars? Ciao, Michael.