Hi!

As usually, Apple dwarf tools crash when seeing the new extensions
and I forgot to guard all their output with !dwarf_strict (if it is accepted
for DWARF 5 it will of course be changed into
dwarf_version >= 5 || !dwarf_strict).

Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux,
tested on a short testcase that with -gstrict-dwarf we don't emit
any of them.  Ok for trunk?

2011-03-17  Jakub Jelinek  <ja...@redhat.com>

        PR bootstrap/48153
        * dwarf2out.c (mem_loc_descriptor) <case ENTRY_VALUE>: Return NULL
        if dwarf_strict.
        (gen_subprogram_die): Don't add call_site DIEs if dwarf_strict.
        Clear call_arg_locations and call_arg_loc_last always.

--- gcc/dwarf2out.c.jj  2011-03-16 17:28:36.000000000 +0100
+++ gcc/dwarf2out.c     2011-03-16 21:32:35.657483621 +0100
@@ -13864,6 +13864,8 @@ mem_loc_descriptor (rtx rtl, enum machin
       return 0;
 
     case ENTRY_VALUE:
+      if (dwarf_strict)
+       return NULL;
       mem_loc_result = new_loc_descr (DW_OP_GNU_entry_value, 0, 0);
       mem_loc_result->dw_loc_oprnd1.val_class = dw_val_class_loc;
       if (REG_P (ENTRY_VALUE_EXP (rtl)))
@@ -19447,7 +19449,7 @@ gen_subprogram_die (tree decl, dw_die_re
       current_function_has_inlines = 0;
       decls_for_scope (outer_scope, subr_die, 0);
 
-      if (call_arg_locations)
+      if (call_arg_locations && !dwarf_strict)
        {
          struct call_arg_loc_node *ca_loc;
          for (ca_loc = call_arg_locations; ca_loc; ca_loc = ca_loc->next)
@@ -19547,11 +19549,12 @@ gen_subprogram_die (tree decl, dw_die_re
                    tail_call_site_note_count++;
                }
            }
-         call_arg_locations = NULL;
-         call_arg_loc_last = NULL;
        }
+      call_arg_locations = NULL;
+      call_arg_loc_last = NULL;
       if (tail_call_site_count >= 0
-         && tail_call_site_count == tail_call_site_note_count)
+         && tail_call_site_count == tail_call_site_note_count
+         && !dwarf_strict)
        {
          if (call_site_count >= 0
              && call_site_count == call_site_note_count)

        Jakub

Reply via email to