diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2007-02-15 04:19:33 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2007-02-15 04:19:33 +0000 |
commit | db9e0d2af65c2caafd568536b3613e7e729ab006 (patch) | |
tree | 8033203ffbf059b35b6d05a1dfa5a9d51a41693f /gcc | |
parent | 5ad17e7d5ae0ce60235583e542fbe958812c3310 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/interface4.C | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/interface4.h | 8 |
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; +} |