> In fold-const.c, there are many of calls to
> lang_hooks.decls.global_bindings_p, and the implementation of this in
> name-lookup.h will look at the the cfun->language
>
>
> #define cp_function_chain (cfun->language)
>
> #define current_binding_level \
> (*(cfun && cp_function_chain && cp_function_chain->bindings \
> ? &cp_function_chain->bindings \
>
> int
> global_bindings_p (void)
> {
> return global_scope_p (current_binding_level);
> }
>
>
> In gcc 4.4.3, current_binding_level is defined in a way that
> cp_function_chain->bindings is not guarded, resulting in segfault for
> clones. In trunk, this is guarded -- but not setting language field
> for clone probably just hide the problem.
Indeed, it seems to me that global_bindings_p should go, clearly the LTO does
not preserve its behaviour in any sane way.
I am however completely missing the point of this langhook and doc is not
exactly
informative either:
/* Returns nonzero if we are in the global binding level. Ada
returns -1 for an undocumented reason used in stor-layout.c. */
What is the purpose of this hook?
Honza