On Mon, May 14, 2012 at 09:20:16AM -0400, Jason Merrill wrote:
> On 05/14/2012 09:09 AM, Jakub Jelinek wrote:
> >+  if (debug_info_level>= DINFO_LEVEL_VERBOSE
> >+      && !VEC_empty (macinfo_entry, macinfo_table))
> 
> Let's make this a macro, perhaps "have_macinfo"?

Like this?

2012-05-14  Jakub Jelinek  <ja...@redhat.com>

        * dwarf2out.c (have_macinfo): Define.
        (dwarf2out_finish): Don't emit DW_AT_GNU_macros or DW_AT_macro_info
        attribute, don't force empty compilation unit and don't emit any
        .debug_macinfo/.debug_macro section if macinfo_table is empty.

--- gcc/dwarf2out.c.jj  2012-05-14 10:43:21.005649346 +0200
+++ gcc/dwarf2out.c     2012-05-14 15:32:12.035805408 +0200
@@ -2799,6 +2799,12 @@ static GTY (()) VEC (pubname_entry, gc) 
    defines/undefines (and file start/end markers).  */
 static GTY (()) VEC (macinfo_entry, gc) * macinfo_table;
 
+/* True if .debug_macinfo or .debug_macros section is going to be
+   emitted.  */
+#define have_macinfo \
+  (debug_info_level >= DINFO_LEVEL_VERBOSE \
+   && !VEC_empty (macinfo_entry, macinfo_table))
+
 /* Array of dies for which we should generate .debug_ranges info.  */
 static GTY ((length ("ranges_table_allocated"))) dw_ranges_ref ranges_table;
 
@@ -22140,7 +22146,7 @@ dwarf2out_finish (const char *filename)
     add_AT_lineptr (comp_unit_die (), DW_AT_stmt_list,
                    debug_line_section_label);
 
-  if (debug_info_level >= DINFO_LEVEL_VERBOSE)
+  if (have_macinfo)
     add_AT_macptr (comp_unit_die (),
                   dwarf_strict ? DW_AT_macro_info : DW_AT_GNU_macros,
                   macinfo_section_label);
@@ -22175,8 +22181,8 @@ dwarf2out_finish (const char *filename)
   htab_delete (comdat_type_table);
 
   /* Output the main compilation unit if non-empty or if .debug_macinfo
-     will be emitted.  */
-  output_comp_unit (comp_unit_die (), debug_info_level >= DINFO_LEVEL_VERBOSE);
+     or .debug_macro will be emitted.  */
+  output_comp_unit (comp_unit_die (), have_macinfo);
 
   /* Output the abbreviation table.  */
   if (abbrev_die_table_in_use != 1)
@@ -22256,12 +22262,11 @@ dwarf2out_finish (const char *filename)
     }
 
   /* Have to end the macro section.  */
-  if (debug_info_level >= DINFO_LEVEL_VERBOSE)
+  if (have_macinfo)
     {
       switch_to_section (debug_macinfo_section);
       ASM_OUTPUT_LABEL (asm_out_file, macinfo_section_label);
-      if (!VEC_empty (macinfo_entry, macinfo_table))
-       output_macinfo ();
+      output_macinfo ();
       dw2_asm_output_data (1, 0, "End compilation unit");
     }
 


        Jakub

Reply via email to