diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f12c2775f21..5196df9db4f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2004-10-11 Mark Mitchell + + PR c++/17929 + * decl2.c (finish_anon_union): Robustify. + 2004-10-11 Nathan Sidwell * cp-tree.h (get_dynamic_cast_base_type): Rename to ... diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 896fdfc1834..7a55907ab6e 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1182,9 +1182,15 @@ build_anon_union_vars (tree object) void finish_anon_union (tree anon_union_decl) { - tree type = TREE_TYPE (anon_union_decl); + tree type; tree main_decl; - bool public_p = TREE_PUBLIC (anon_union_decl); + bool public_p; + + if (anon_union_decl == error_mark_node) + return; + + type = TREE_TYPE (anon_union_decl); + public_p = TREE_PUBLIC (anon_union_decl); /* The VAR_DECL's context is the same as the TYPE's context. */ DECL_CONTEXT (anon_union_decl) = DECL_CONTEXT (TYPE_NAME (type));