re PR c++/7788 (g++-3.2 internal error: Segmentation fault)
authorNathan Sidwell <nathan@codesourcery.com>
Sun, 29 Sep 2002 18:27:02 +0000 (18:27 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Sun, 29 Sep 2002 18:27:02 +0000 (18:27 +0000)
cp:
PR c++/7788
* rtti.c (unemitted_tinfo_decl_p): Check it has a field.
testsuite:
* g++.dg/rtti/crash1.C: New test.

From-SVN: r57630

gcc/cp/ChangeLog
gcc/cp/rtti.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/rtti/crash1.C [new file with mode: 0644]

index e3265e4..792ce89 100644 (file)
@@ -1,3 +1,8 @@
+2002-09-29  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/7788
+       * rtti.c (unemitted_tinfo_decl_p): Check it has a field.
+
 2002-09-29  Kazu Hirata  <kazu@cs.umass.edu>
 
        * cp-tree.h: Fix comment typos.
index 6d6e818..1d692fc 100644 (file)
@@ -1419,11 +1419,13 @@ unemitted_tinfo_decl_p (t, data)
       TREE_CODE (t) == VAR_DECL
       /* whos name points back to itself */
       && IDENTIFIER_GLOBAL_VALUE (DECL_NAME (t)) == t
-      /* whos name's type is non-null */
+      /* whose name's type is non-null */
       && TREE_TYPE (DECL_NAME (t))
-      /* and whos type is a struct */
+      /* and whose type is a struct */
       && TREE_CODE (TREE_TYPE (t)) == RECORD_TYPE
-      /* with a first field of our pseudo type info */
+      /* with a field */
+      && TYPE_FIELDS (TREE_TYPE (t))
+      /* which is our pseudo type info */
       && TREE_TYPE (TYPE_FIELDS (TREE_TYPE (t))) == ti_desc_type_node)
     return 1;
   return 0;
index 46400b6..cc3219b 100644 (file)
@@ -1,3 +1,7 @@
+2002-09-29  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * g++.dg/rtti/crash1.C: New test.
+
 2002-09-29  Hans-Peter Nilsson  <hp@bitrange.com>
 
        * gcc.dg/sibcall-1.c, gcc.dg/sibcall-2.c, gcc.dg/sibcall-3.c,
diff --git a/gcc/testsuite/g++.dg/rtti/crash1.C b/gcc/testsuite/g++.dg/rtti/crash1.C
new file mode 100644 (file)
index 0000000..eea6a39
--- /dev/null
@@ -0,0 +1,10 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 29 Sep 2002 <nathan@codesourcery.com>
+
+// PR 7788. ICE
+
+class foo;
+extern const foo bar;
+class bar;