From 92e8e53a31939ed5c4697c5e0a0b16af4a357bc3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 10 Feb 2010 16:02:56 +0100 Subject: [PATCH] re PR debug/43010 (ICE with -femit-struct-debug-baseonly) 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 | 6 ++++++ gcc/dwarf2out.c | 4 +++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/debug/pr43010.C | 8 ++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/debug/pr43010.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e680a14a631..6ef99e6e170 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-02-10 Jakub Jelinek + + 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 * config/sh/sh.c (find_barrier): Skip call insn with a REG_EH_REGION diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 0fd93cb194a..96b0c9fb56b 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -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. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 273636cf297..08299247a71 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-10 Jakub Jelinek + + PR debug/43010 + * g++.dg/debug/pr43010.C: New test. + 2010-02-10 Richard Guenther 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 index 00000000000..24b5b271374 --- /dev/null +++ b/gcc/testsuite/g++.dg/debug/pr43010.C @@ -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 -- 2.30.2