This is at LTO time and the function in question is this: #include "stdlib.h" typedef struct bogus type_ta;
struct bogus { int i; double x; int j; }; void helper( void *x) { type_ta *y = (type_ta*)x; y->i = rand(); } and I'm checking the local_decls it like this: cgraph_node* node; FOR_EACH_FUNCTION_WITH_GIMPLE_BODY ( node) { tree decl; unsigned i; node->get_untransformed_body (); struct function *fn = DECL_STRUCT_FUNCTION ( node->decl); DEBUG( "L# %d, fuction name = %s\n", __LINE__, lang_hooks.decl_printable_name ( node->decl, 2)); if( fn == NULL ) { DEBUG( " EMPTY\n"); continue; } FOR_EACH_LOCAL_DECL ( fn, i, decl) { tree base = base_type_of ( decl); DEBUG( "L# %d Consider local var decl\n", __LINE__); . . Needless to sat I get the function name "helper" but no variables. I suspected the LTO streaming process but that seems bullet proof and if local_decls are there when streaming out it should be restored when streaming in. I also suspected inlining but it still happened with "-fno-inline" present. If you'll note the get_untransformed_body call above (which David Malcolm suggested to cure a NULL fn) I suspect I'm lacking some other call which will make all things right. Thanks, Gary Oblock