re PR c++/28279 (ICE in finish_static_data_member_decl, at cp/decl2.c:716)

PR c++/28279
        * decl2.c (finish_static_data_member_decl): Don't assert
        TREE_PUBLIC.

From-SVN: r115228
This commit is contained in:
Jason Merrill 2006-07-06 14:39:39 -04:00 committed by Jason Merrill
parent 0ac5ccd149
commit 1f0b926a1f
3 changed files with 22 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2006-07-06 Jason Merrill <jason@redhat.com>
PR c++/28279
* decl2.c (finish_static_data_member_decl): Don't assert
TREE_PUBLIC.
2006-07-05 Jason Merrill <jason@redhat.com>
PR c++/13983

View File

@ -713,15 +713,13 @@ finish_static_data_member_decl (tree decl,
tree asmspec_tree,
int flags)
{
gcc_assert (TREE_PUBLIC (decl));
DECL_CONTEXT (decl) = current_class_type;
/* We cannot call pushdecl here, because that would fill in the
TREE_CHAIN of our decl. Instead, we modify cp_finish_decl to do
the right thing, namely, to put this decl out straight away. */
if (! processing_template_decl)
if (! processing_template_decl && TREE_PUBLIC (decl))
note_vague_linkage_var (decl);
if (LOCAL_CLASS_P (current_class_type))

View File

@ -0,0 +1,15 @@
// PR c++/28279
// finish_static_data_member_decl was confused by the anonymous
// namespace causing TREE_PUBLIC to be unset
template<typename T>
struct is_pointer_impl {
static const bool value = true;
};
namespace {
class prefix_name_mapper {};
}
static const bool val = is_pointer_impl<prefix_name_mapper>::value;