diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2006-10-22 16:07:41 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2006-10-22 16:07:41 +0000 |
commit | 6e4be1fa8c986cb0e12fb2fed62790dd838f38ed (patch) | |
tree | b15775d98879cdb94a82961c5ce181bce8ba2725 | |
parent | 59edb6b4b4482c87d343a81614bac450b894f7b9 (diff) | |
download | gcc-6e4be1fa8c986cb0e12fb2fed62790dd838f38ed.zip gcc-6e4be1fa8c986cb0e12fb2fed62790dd838f38ed.tar.gz gcc-6e4be1fa8c986cb0e12fb2fed62790dd838f38ed.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/rtti.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/rtti3.C | 13 |
4 files changed, 24 insertions, 7 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a0cfbc0..0e6314c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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> diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 0cb825d..077d3e0 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -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); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b55cd7c..1d6b02b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/g++.dg/abi/rtti3.C b/gcc/testsuite/g++.dg/abi/rtti3.C new file mode 100644 index 0000000..4c118d1 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/rtti3.C @@ -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; +} |