re PR debug/43010 (ICE with -femit-struct-debug-baseonly)
authorJakub Jelinek <jakub@redhat.com>
Wed, 10 Feb 2010 15:02:56 +0000 (16:02 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 10 Feb 2010 15:02:56 +0000 (16:02 +0100)
PR debug/43010
* dwarf2out.c (retry_incomplete_types): Don't call gen_type_die
if no debug info should be emitted for it.

* g++.dg/debug/pr43010.C: New test.

From-SVN: r156657

gcc/ChangeLog
gcc/dwarf2out.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/debug/pr43010.C [new file with mode: 0644]

index e680a14a6311ea7289fcbce2c37b967a9605a15c..6ef99e6e170578f7cc620bf2e4795ceb664a5c50 100644 (file)
@@ -1,3 +1,9 @@
+2010-02-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/43010
+       * dwarf2out.c (retry_incomplete_types): Don't call gen_type_die
+       if no debug info should be emitted for it.
+
 2010-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        * config/sh/sh.c (find_barrier): Skip call insn with a REG_EH_REGION
index 0fd93cb194a481276efe0044c6ed7a52db0d268f..96b0c9fb56b5e1a957215d80ea41771ea775f517 100644 (file)
@@ -17162,7 +17162,9 @@ retry_incomplete_types (void)
   int i;
 
   for (i = VEC_length (tree, incomplete_types) - 1; i >= 0; i--)
-    gen_type_die (VEC_index (tree, incomplete_types, i), comp_unit_die);
+    if (should_emit_struct_debug (VEC_index (tree, incomplete_types, i),
+                                 DINFO_USAGE_DIR_USE))
+      gen_type_die (VEC_index (tree, incomplete_types, i), comp_unit_die);
 }
 
 /* Determine what tag to use for a record type.  */
index 273636cf297143dedbfd7f3aa8ea90aebaee2159..08299247a71bf772b3502fcae55c5cddc11f0568 100644 (file)
@@ -1,3 +1,8 @@
+2010-02-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/43010
+       * g++.dg/debug/pr43010.C: New test.
+
 2010-02-10  Richard Guenther  <rguenther@suse.de>
 
        PR c/43007
diff --git a/gcc/testsuite/g++.dg/debug/pr43010.C b/gcc/testsuite/g++.dg/debug/pr43010.C
new file mode 100644 (file)
index 0000000..24b5b27
--- /dev/null
@@ -0,0 +1,8 @@
+// PR debug/43010
+// { dg-do compile }
+// { dg-options "-g -femit-struct-debug-baseonly" }
+# 1 "foo.C"
+# 1 "bar.h" 1
+typedef struct { int i; } S __attribute__((aligned));
+typedef struct { struct { int i; } j; } T __attribute__((aligned));
+# 1 "foo.C" 2