diff options
author | Cary Coutant <ccoutant@google.com> | 2013-11-21 23:08:27 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@gcc.gnu.org> | 2013-11-21 15:08:27 -0800 |
commit | 51b83fdd47de99a9f3927890924c92a1f9c2d8be (patch) | |
tree | 73a75d65ca6bc848d6e672fd80aa39f370dac946 /gcc/dwarf2out.c | |
parent | af7d1b7d17315b450db9de5c3d20f8a24a91b39e (diff) | |
download | gcc-51b83fdd47de99a9f3927890924c92a1f9c2d8be.zip gcc-51b83fdd47de99a9f3927890924c92a1f9c2d8be.tar.gz gcc-51b83fdd47de99a9f3927890924c92a1f9c2d8be.tar.bz2 |
Add minimal line tables at -g1.
2013-11-21 Cary Coutant <ccoutant@google.com>
gcc/
* dwarf2out.c (want_pubnames): Don't do pubnames for -g1.
(add_linkage_name): Don't add linkage name for -g1.
(decls_for_scope): Process subblocks for -g1.
(dwarf2out_source_line): Output line tables for -g1.
(dwarf2out_finish): Likewise.
* tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
unused scopes for -g1.
* opts.c (common_handle_option): Handle -g same as -g2.
* doc/invoke.texi: Update description for -g1.
gcc/testsuite/
* gcc.dg/debug/dwarf2/mlt1.c: New test.
* gcc.dg/debug/dwarf2/mlt2.c: New test.
From-SVN: r205235
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 23cd726..1c0effd 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -8849,6 +8849,8 @@ output_comp_unit (dw_die_ref die, int output_if_empty) static inline bool want_pubnames (void) { + if (debug_info_level <= DINFO_LEVEL_TERSE) + return false; if (debug_generate_pub_sections != -1) return debug_generate_pub_sections; return targetm.want_debug_pub_sections; @@ -16563,11 +16565,12 @@ add_src_coords_attributes (dw_die_ref die, tree decl) static void add_linkage_name (dw_die_ref die, tree decl) { - if ((TREE_CODE (decl) == FUNCTION_DECL || TREE_CODE (decl) == VAR_DECL) - && TREE_PUBLIC (decl) - && !DECL_ABSTRACT (decl) - && !(TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl)) - && die->die_tag != DW_TAG_member) + if (debug_info_level > DINFO_LEVEL_TERSE + && (TREE_CODE (decl) == FUNCTION_DECL || TREE_CODE (decl) == VAR_DECL) + && TREE_PUBLIC (decl) + && !DECL_ABSTRACT (decl) + && !(TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl)) + && die->die_tag != DW_TAG_member) { /* Defer until we have an assembler name set. */ if (!DECL_ASSEMBLER_NAME_SET_P (decl)) @@ -19963,16 +19966,19 @@ decls_for_scope (tree stmt, dw_die_ref context_die, int depth) /* Output the DIEs to represent all of the data objects and typedefs declared directly within this block but not within any nested sub-blocks. Also, nested function and tag DIEs have been - generated with a parent of NULL; fix that up now. */ - for (decl = BLOCK_VARS (stmt); decl != NULL; decl = DECL_CHAIN (decl)) - process_scope_var (stmt, decl, NULL_TREE, context_die); - for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++) - process_scope_var (stmt, NULL, BLOCK_NONLOCALIZED_VAR (stmt, i), - context_die); + generated with a parent of NULL; fix that up now. We don't + have to do this if we're at -g1. */ + if (debug_info_level > DINFO_LEVEL_TERSE) + { + for (decl = BLOCK_VARS (stmt); decl != NULL; decl = DECL_CHAIN (decl)) + process_scope_var (stmt, decl, NULL_TREE, context_die); + for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++) + process_scope_var (stmt, NULL, BLOCK_NONLOCALIZED_VAR (stmt, i), + context_die); + } - /* If we're at -g1, we're not interested in subblocks. */ - if (debug_info_level <= DINFO_LEVEL_TERSE) - return; + /* Even if we're at -g1, we need to process the subblocks in order to get + inlined call information. */ /* Output the DIEs to represent all sub-blocks (and the items declared therein) of this block. */ @@ -21381,7 +21387,7 @@ dwarf2out_source_line (unsigned int line, const char *filename, unsigned int file_num; dw_line_info_table *table; - if (debug_info_level < DINFO_LEVEL_NORMAL || line == 0) + if (debug_info_level < DINFO_LEVEL_TERSE || line == 0) return; /* The discriminator column was added in dwarf4. Simplify the below @@ -24073,7 +24079,7 @@ dwarf2out_finish (const char *filename) } } - if (debug_info_level >= DINFO_LEVEL_NORMAL) + if (debug_info_level >= DINFO_LEVEL_TERSE) add_AT_lineptr (main_comp_unit_die, DW_AT_stmt_list, debug_line_section_label); @@ -24130,7 +24136,7 @@ dwarf2out_finish (const char *filename) /* Add a pointer to the line table for the main compilation unit so that the debugger can make sense of DW_AT_decl_file attributes. */ - if (debug_info_level >= DINFO_LEVEL_NORMAL) + if (debug_info_level >= DINFO_LEVEL_TERSE) add_AT_lineptr (ctnode->root_die, DW_AT_stmt_list, (!dwarf_split_debug_info ? debug_line_section_label |