re PR libstdc++/20647 (Wrong typeid for incomplete types)

cp/
	PR c++/20647
	* rtti.c (tinfo_base_init): The type info string is always global.
testsuite/
	PR c++/20647
	* g++.dg/abi/rtti3.C: New.

From-SVN: r117957
This commit is contained in:
Nathan Sidwell 2006-10-22 16:07:41 +00:00 committed by Nathan Sidwell
parent 59edb6b4b4
commit 6e4be1fa8c
4 changed files with 24 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2006-10-22 Nathan Sidwell <nathan@codesourcery.com>
PR c++/20647
* rtti.c (tinfo_base_init): The type info string is always global.
2006-10-20 Lee Millward <lee.millward@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>

View File

@ -824,13 +824,7 @@ tinfo_base_init (tinfo_s *ti, tree target)
TREE_STATIC (name_decl) = 1;
DECL_EXTERNAL (name_decl) = 0;
DECL_TINFO_P (name_decl) = 1;
if (involves_incomplete_p (target))
{
TREE_PUBLIC (name_decl) = 0;
DECL_INTERFACE_KNOWN (name_decl) = 1;
}
else
set_linkage_according_to_type (target, name_decl);
set_linkage_according_to_type (target, name_decl);
import_export_decl (name_decl);
DECL_INITIAL (name_decl) = name_string;
mark_used (name_decl);

View File

@ -1,3 +1,8 @@
2006-10-22 Nathan Sidwell <nathan@codesourcery.com>
PR c++/20647
* g++.dg/abi/rtti3.C: New.
2006-10-21 Uros Bizjak <uros@kss-loka.si>
PR middle-end/28252

View File

@ -0,0 +1,13 @@
// PR 20647, we must emit the typeinfo's string as weak, but not the
// necessarily the type info object
// { dg-require-weak "" }
// { dg-final { scan-assembler ".weak\[ \t\]_?_ZTSPP1A" } }
// { dg-final { scan-assembler-not ".weak\[ \t\]_?_ZTIPP1A" } }
struct A;
void Foo ()
{
throw (A **)0;
}