]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/28109 (ICE with typeid of incomplete type)
authorVolker Reichelt <reichelt@gcc.gnu.org>
Thu, 22 Jun 2006 09:43:53 +0000 (09:43 +0000)
committerVolker Reichelt <reichelt@gcc.gnu.org>
Thu, 22 Jun 2006 09:43:53 +0000 (09:43 +0000)
PR c++/28109
* rtti.c (get_tinfo_decl_dynamic): Robustify.

* g++.dg/rtti/incomplete1.C: New test.

From-SVN: r114884

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

index fe232f798a13c47816e0cacfa922eeb0fa7667a3..babd054214743877eed46136ac03005ece8fc306 100644 (file)
@@ -1,6 +1,11 @@
+2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28109
+       * rtti.c (get_tinfo_decl_dynamic): Robustify.
+
 2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
-               * cp-tree.def: Fix typo.
+       * cp-tree.def: Fix typo.
 
 2006-06-13  Roger Sayle  <roger@eyesopen.com>
 
index 5f44fd7ed1a53153f5055d64c16b8aff612ae6c8..0f43dc7362b7fa765dbd47aa5375eb6ea9b112d5 100644 (file)
@@ -202,7 +202,7 @@ get_tinfo_decl_dynamic (tree exp)
   tree type;
   tree t;
   
-  if (exp == error_mark_node)
+  if (error_operand_p (exp))
     return error_mark_node;
 
   /* peel back references, so they match.  */
index f763bb7b5f465ea63eb53e852524b27c77a3c0d1..9ec0a99f0a536a6f10f45a12344043643ae61956 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/28109
+       * g++.dg/rtti/incomplete1.C: New test.
+
 2006-06-21  Roger Sayle  <roger@eyesopen.com>
 
        PR target/27861
diff --git a/gcc/testsuite/g++.dg/rtti/incomplete1.C b/gcc/testsuite/g++.dg/rtti/incomplete1.C
new file mode 100644 (file)
index 0000000..2bf46e0
--- /dev/null
@@ -0,0 +1,12 @@
+// PR c++/28109
+// { dg-do compile }
+
+#include <typeinfo>
+
+struct A;
+
+void foo()
+{
+  A a;  // { dg-error "incomplete type" }
+  typeid (a);
+}