aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2007-02-15 04:19:33 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2007-02-15 04:19:33 +0000
commitdb9e0d2af65c2caafd568536b3613e7e729ab006 (patch)
tree8033203ffbf059b35b6d05a1dfa5a9d51a41693f
parent5ad17e7d5ae0ce60235583e542fbe958812c3310 (diff)
downloadgcc-db9e0d2af65c2caafd568536b3613e7e729ab006.zip
gcc-db9e0d2af65c2caafd568536b3613e7e729ab006.tar.gz
gcc-db9e0d2af65c2caafd568536b3613e7e729ab006.tar.bz2
dwarf2out.c (dwarf2out_finish): Accept namespaces as context of limbo die nodes.
gcc/ChangeLog: * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of limbo die nodes. gcc/testsuite/ChangeLog: * g++.dg/ext/interface4.C, g++.dg/ext/interface4.h: New. From-SVN: r121979
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dwarf2out.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/ext/interface4.C13
-rw-r--r--gcc/testsuite/g++.dg/ext/interface4.h8
5 files changed, 33 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 01528f2..870b1e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-15 Alexandre Oliva <aoliva@redhat.com>
+
+ * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
+ limbo die nodes.
+
2007-02-14 Joseph Myers <joseph@codesourcery.com>
* emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 92e14e5..901fbff 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -14375,7 +14375,9 @@ dwarf2out_finish (const char *filename)
else if (TYPE_P (node->created_for))
context = TYPE_CONTEXT (node->created_for);
- gcc_assert (context && TREE_CODE (context) == FUNCTION_DECL);
+ gcc_assert (context
+ && (TREE_CODE (context) == FUNCTION_DECL
+ || TREE_CODE (context) == NAMESPACE_DECL));
origin = lookup_decl_die (context);
if (origin)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dde94dd..2c93af2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2007-02-15 Alexandre Oliva <aoliva@redhat.com>
+
+ * g++.dg/ext/interface4.C, g++.dg/ext/interface4.h: New.
+
2007-02-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* g++.dg/tree-ssa/nothrow-1.C: Skip test if -fpic/-fPIC is used.
diff --git a/gcc/testsuite/g++.dg/ext/interface4.C b/gcc/testsuite/g++.dg/ext/interface4.C
new file mode 100644
index 0000000..85bb912
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/interface4.C
@@ -0,0 +1,13 @@
+/* https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=227376 */
+
+/* { dg-do compile } */
+/* { dg-options "-g2" } */
+
+/* We used to crash when emitting debug info for type N::A because its
+ context was a namespace, not a function. */
+
+#include "interface4.h"
+
+void f ( ) {
+ g ( );
+}
diff --git a/gcc/testsuite/g++.dg/ext/interface4.h b/gcc/testsuite/g++.dg/ext/interface4.h
new file mode 100644
index 0000000..0971b37
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/interface4.h
@@ -0,0 +1,8 @@
+#pragma interface
+namespace N {
+ typedef int A;
+}
+inline void g ( ) {
+ static N :: A a = 0;
+ a = a;
+}