Ok for google branches. David
On Fri, Nov 4, 2011 at 10:13 AM, Rong Xu <x...@google.com> wrote: > Don't emit the type info if a function's context type is not > output. > > For google branch only. > > Tested with internal benchmark suite with -g. > > 2011-11-04 Rong Xu <x...@google.com> > > * gcc/dwarf2out.c (dwarf2out_decl): not emit type info > for unreachable functions in LIPO mode. > > Index: gcc/dwarf2out.c > =================================================================== > --- gcc/dwarf2out.c (revision 180964) > +++ gcc/dwarf2out.c (working copy) > @@ -95,6 +95,7 @@ > #include "tree-flow.h" > #include "cfglayout.h" > #include "opts.h" > +#include "l-ipo.h" > > static void dwarf2out_source_line (unsigned int, const char *, int, bool); > static rtx last_var_location_insn; > @@ -19745,6 +19746,39 @@ > void > dwarf2out_decl (tree decl) > { > + /* In LIPO mode, we may output some functions whose type is defined > + in another function that will not be output. This can result in > + undefined location list symbols in the debug type info. > + Here we disable the output of the type info for this case. > + It is safe since this function and its debug info should never > + be referenced. */ > + if (L_IPO_COMP_MODE) > + { > + tree decl_context, orig_decl; > + > + decl_context = DECL_CONTEXT (decl); > + while (decl_context && > + TREE_CODE (decl_context) != TRANSLATION_UNIT_DECL) > + { > + struct cgraph_node *node; > + > + orig_decl = DECL_ORIGIN (decl_context); > + while (orig_decl != DECL_ORIGIN (orig_decl)) > + orig_decl = DECL_ORIGIN (orig_decl); > + > + /* Refer to cgraph_mark_functions_to_output() in cgraphunit.c, > + if cgraph_is_aux_decl_external() is true, > + this function will not be output in LIPO mode. */ > + if (TREE_CODE (decl_context) == FUNCTION_DECL && > + TREE_PUBLIC (decl_context) && > + (node = cgraph_get_node (decl_context)) && > + cgraph_is_aux_decl_external (node)) > + return; > + > + decl_context = DECL_CONTEXT (orig_decl); > + } > + } > + > dw_die_ref context_die = comp_unit_die (); > > switch (TREE_CODE (decl)) > > -- > This patch is available for review at http://codereview.appspot.com/5355042 >