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:
parent
59edb6b4b4
commit
6e4be1fa8c
|
@ -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>
|
2006-10-20 Lee Millward <lee.millward@codesourcery.com>
|
||||||
Mark Mitchell <mark@codesourcery.com>
|
Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
|
|
@ -824,13 +824,7 @@ tinfo_base_init (tinfo_s *ti, tree target)
|
||||||
TREE_STATIC (name_decl) = 1;
|
TREE_STATIC (name_decl) = 1;
|
||||||
DECL_EXTERNAL (name_decl) = 0;
|
DECL_EXTERNAL (name_decl) = 0;
|
||||||
DECL_TINFO_P (name_decl) = 1;
|
DECL_TINFO_P (name_decl) = 1;
|
||||||
if (involves_incomplete_p (target))
|
set_linkage_according_to_type (target, name_decl);
|
||||||
{
|
|
||||||
TREE_PUBLIC (name_decl) = 0;
|
|
||||||
DECL_INTERFACE_KNOWN (name_decl) = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
set_linkage_according_to_type (target, name_decl);
|
|
||||||
import_export_decl (name_decl);
|
import_export_decl (name_decl);
|
||||||
DECL_INITIAL (name_decl) = name_string;
|
DECL_INITIAL (name_decl) = name_string;
|
||||||
mark_used (name_decl);
|
mark_used (name_decl);
|
||||||
|
|
|
@ -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>
|
2006-10-21 Uros Bizjak <uros@kss-loka.si>
|
||||||
|
|
||||||
PR middle-end/28252
|
PR middle-end/28252
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue