diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b2ffd69800f..2a73783cee6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-03-15 Jason Merrill + + PR debug/6387 + * dwarf2out.c (dwarf2out_decl): If we're at -g1, just stick nested + function DIEs at toplevel. + (decls_for_scope): At -g1, don't descend into subblocks. + 2003-03-15 Ulrich Weigand * varasm.c (struct rtx_const): Change type of un.addr member diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 6a15a3b13f8..e31fcb878d3 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -12018,6 +12018,10 @@ decls_for_scope (stmt, context_die, depth) gen_decl_die (decl, context_die); } + /* If we're at -g1, we're not interested in subblocks. */ + if (debug_info_level <= DINFO_LEVEL_TERSE) + return; + /* Output the DIEs to represent all sub-blocks (and the items declared therein) of this block. */ for (subblocks = BLOCK_SUBBLOCKS (stmt); @@ -12286,7 +12290,9 @@ dwarf2out_decl (decl) /* If we're a nested function, initially use a parent of NULL; if we're a plain function, this will be fixed up in decls_for_scope. If we're a method, it will be ignored, since we already have a DIE. */ - if (decl_function_context (decl)) + if (decl_function_context (decl) + /* But if we're in terse mode, we don't care about scope. */ + && debug_info_level > DINFO_LEVEL_TERSE) context_die = NULL; break;