Re: [PATCH V6 2/7] dwarf: new dwarf_debuginfo_p predicate
On Wed, Apr 14, 2021 at 4:07 PM Jose E. Marchesi via Gcc-patches wrote: > > This patch introduces a dwarf_debuginfo_p predicate that abstracts and > replaces complex checks on write_symbols. OK once stage1 opens (can be pushed independently of the rest). Richard. > 2021-04-14 Indu Bhagat > > gcc/ChangeLog > > * flags.h (dwarf_debuginfo_p): New function declaration. > * opts.c (dwarf_debuginfo_p): New function definition. > * config/c6x/c6x.c (c6x_output_file_unwind): Likewise. > * dwarf2cfi.c (cfi_label_required_p): Likewise. > (dwarf2out_do_frame): Likewise. > * final.c (dwarf2_debug_info_emitted_p): Likewise. > (final_scan_insn_1): Likewise. > * targhooks.c (default_debug_unwind_info): Likewise. > * toplev.c (process_options): Likewise. > > gcc/c-family/ChangeLog > > * c-lex.c (init_c_lex): Use dwarf_debuginfo_p. > --- > gcc/c-family/c-lex.c | 4 ++-- > gcc/config/c6x/c6x.c | 3 +-- > gcc/dwarf2cfi.c | 9 - > gcc/final.c | 15 ++- > gcc/flags.h | 3 +++ > gcc/opts.c | 8 > gcc/targhooks.c | 2 +- > gcc/toplev.c | 6 ++ > 8 files changed, 27 insertions(+), 23 deletions(-) > > diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c > index 6374b72ed2d..5174b22c303 100644 > --- a/gcc/c-family/c-lex.c > +++ b/gcc/c-family/c-lex.c > @@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see > #include "stor-layout.h" > #include "c-pragma.h" > #include "debug.h" > +#include "flags.h" > #include "file-prefix-map.h" /* remap_macro_filename() */ > #include "langhooks.h" > #include "attribs.h" > @@ -87,8 +88,7 @@ init_c_lex (void) > >/* Set the debug callbacks if we can use them. */ >if ((debug_info_level == DINFO_LEVEL_VERBOSE > - && (write_symbols == DWARF2_DEBUG > - || write_symbols == VMS_AND_DWARF2_DEBUG)) > + && dwarf_debuginfo_p ()) >|| flag_dump_go_spec != NULL) > { >cb->define = cb_define; > diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c > index f9ad1e5f6c5..a10e2f8d662 100644 > --- a/gcc/config/c6x/c6x.c > +++ b/gcc/config/c6x/c6x.c > @@ -439,8 +439,7 @@ c6x_output_file_unwind (FILE * f) > { >if (flag_unwind_tables || flag_exceptions) > { > - if (write_symbols == DWARF2_DEBUG > - || write_symbols == VMS_AND_DWARF2_DEBUG) > + if (dwarf_debuginfo_p ()) > asm_fprintf (f, "\t.cfi_sections .debug_frame, .c6xabi.exidx\n"); > else > asm_fprintf (f, "\t.cfi_sections .c6xabi.exidx\n"); > diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c > index 362ff3fdac2..c27ac1960b0 100644 > --- a/gcc/dwarf2cfi.c > +++ b/gcc/dwarf2cfi.c > @@ -39,7 +39,7 @@ along with GCC; see the file COPYING3. If not see > #include "expr.h" /* init_return_column_size */ > #include "output.h"/* asm_out_file */ > #include "debug.h" /* dwarf2out_do_frame, dwarf2out_do_cfi_asm */ > - > +#include "flags.h" /* dwarf_debuginfo_p */ > > /* ??? Poison these here until it can be done generically. They've been > totally replaced in this file; make sure it stays that way. */ > @@ -2289,8 +2289,7 @@ cfi_label_required_p (dw_cfi_ref cfi) > >if (dwarf_version == 2 >&& debug_info_level > DINFO_LEVEL_TERSE > - && (write_symbols == DWARF2_DEBUG > - || write_symbols == VMS_AND_DWARF2_DEBUG)) > + && dwarf_debuginfo_p ()) > { >switch (cfi->dw_cfi_opc) > { > @@ -3557,9 +3556,9 @@ bool > dwarf2out_do_frame (void) > { >/* We want to emit correct CFA location expressions or lists, so we > - have to return true if we're going to output debug info, even if > + have to return true if we're going to generate debug info, even if > we're not going to output frame or unwind info. */ > - if (write_symbols == DWARF2_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG) > + if (dwarf_debuginfo_p ()) > return true; > >if (saved_do_cfi_asm > 0) > diff --git a/gcc/final.c b/gcc/final.c > index daae115fef5..cae692062b4 100644 > --- a/gcc/final.c > +++ b/gcc/final.c > @@ -1442,7 +1442,8 @@ asm_str_count (const char *templ) > static bool > dwarf2_debug_info_emitted_p (tree decl) > { > - if (write_symbols != DWARF2_DEBUG && write_symbols != VMS_AND_DWARF2_DEBUG) > + /* When DWARF2 debug info is not generated internally. */ > + if (!dwarf_debuginfo_p ()) > return false; > >if (DECL_IGNORED_P (decl)) > @@ -2330,10 +2331,8 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int > optimize_p ATTRIBUTE_UNUSED, > break; > > case NOTE_INSN_BLOCK_BEG: > - if (debug_info_level == DINFO_LEVEL_NORMAL > - || debug_info_level == DINFO_LEVEL_VERBOSE > - || write_symbols == DWARF2_DEBUG > - || write_symbols == VMS_AND_DWARF2_DEBUG > + if (debug_info_leve
[PATCH V6 2/7] dwarf: new dwarf_debuginfo_p predicate
This patch introduces a dwarf_debuginfo_p predicate that abstracts and replaces complex checks on write_symbols. 2021-04-14 Indu Bhagat gcc/ChangeLog * flags.h (dwarf_debuginfo_p): New function declaration. * opts.c (dwarf_debuginfo_p): New function definition. * config/c6x/c6x.c (c6x_output_file_unwind): Likewise. * dwarf2cfi.c (cfi_label_required_p): Likewise. (dwarf2out_do_frame): Likewise. * final.c (dwarf2_debug_info_emitted_p): Likewise. (final_scan_insn_1): Likewise. * targhooks.c (default_debug_unwind_info): Likewise. * toplev.c (process_options): Likewise. gcc/c-family/ChangeLog * c-lex.c (init_c_lex): Use dwarf_debuginfo_p. --- gcc/c-family/c-lex.c | 4 ++-- gcc/config/c6x/c6x.c | 3 +-- gcc/dwarf2cfi.c | 9 - gcc/final.c | 15 ++- gcc/flags.h | 3 +++ gcc/opts.c | 8 gcc/targhooks.c | 2 +- gcc/toplev.c | 6 ++ 8 files changed, 27 insertions(+), 23 deletions(-) diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c index 6374b72ed2d..5174b22c303 100644 --- a/gcc/c-family/c-lex.c +++ b/gcc/c-family/c-lex.c @@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see #include "stor-layout.h" #include "c-pragma.h" #include "debug.h" +#include "flags.h" #include "file-prefix-map.h" /* remap_macro_filename() */ #include "langhooks.h" #include "attribs.h" @@ -87,8 +88,7 @@ init_c_lex (void) /* Set the debug callbacks if we can use them. */ if ((debug_info_level == DINFO_LEVEL_VERBOSE - && (write_symbols == DWARF2_DEBUG - || write_symbols == VMS_AND_DWARF2_DEBUG)) + && dwarf_debuginfo_p ()) || flag_dump_go_spec != NULL) { cb->define = cb_define; diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c index f9ad1e5f6c5..a10e2f8d662 100644 --- a/gcc/config/c6x/c6x.c +++ b/gcc/config/c6x/c6x.c @@ -439,8 +439,7 @@ c6x_output_file_unwind (FILE * f) { if (flag_unwind_tables || flag_exceptions) { - if (write_symbols == DWARF2_DEBUG - || write_symbols == VMS_AND_DWARF2_DEBUG) + if (dwarf_debuginfo_p ()) asm_fprintf (f, "\t.cfi_sections .debug_frame, .c6xabi.exidx\n"); else asm_fprintf (f, "\t.cfi_sections .c6xabi.exidx\n"); diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index 362ff3fdac2..c27ac1960b0 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -39,7 +39,7 @@ along with GCC; see the file COPYING3. If not see #include "expr.h" /* init_return_column_size */ #include "output.h"/* asm_out_file */ #include "debug.h" /* dwarf2out_do_frame, dwarf2out_do_cfi_asm */ - +#include "flags.h" /* dwarf_debuginfo_p */ /* ??? Poison these here until it can be done generically. They've been totally replaced in this file; make sure it stays that way. */ @@ -2289,8 +2289,7 @@ cfi_label_required_p (dw_cfi_ref cfi) if (dwarf_version == 2 && debug_info_level > DINFO_LEVEL_TERSE - && (write_symbols == DWARF2_DEBUG - || write_symbols == VMS_AND_DWARF2_DEBUG)) + && dwarf_debuginfo_p ()) { switch (cfi->dw_cfi_opc) { @@ -3557,9 +3556,9 @@ bool dwarf2out_do_frame (void) { /* We want to emit correct CFA location expressions or lists, so we - have to return true if we're going to output debug info, even if + have to return true if we're going to generate debug info, even if we're not going to output frame or unwind info. */ - if (write_symbols == DWARF2_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG) + if (dwarf_debuginfo_p ()) return true; if (saved_do_cfi_asm > 0) diff --git a/gcc/final.c b/gcc/final.c index daae115fef5..cae692062b4 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1442,7 +1442,8 @@ asm_str_count (const char *templ) static bool dwarf2_debug_info_emitted_p (tree decl) { - if (write_symbols != DWARF2_DEBUG && write_symbols != VMS_AND_DWARF2_DEBUG) + /* When DWARF2 debug info is not generated internally. */ + if (!dwarf_debuginfo_p ()) return false; if (DECL_IGNORED_P (decl)) @@ -2330,10 +2331,8 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, break; case NOTE_INSN_BLOCK_BEG: - if (debug_info_level == DINFO_LEVEL_NORMAL - || debug_info_level == DINFO_LEVEL_VERBOSE - || write_symbols == DWARF2_DEBUG - || write_symbols == VMS_AND_DWARF2_DEBUG + if (debug_info_level >= DINFO_LEVEL_NORMAL + || dwarf_debuginfo_p () || write_symbols == VMS_DEBUG) { int n = BLOCK_NUMBER (NOTE_BLOCK (insn)); @@ -2368,10 +2367,8 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, case NOTE_INSN_BLOCK_END: maybe_output_next_view (seen); - if (debug_info_