diff options
author | Mike Stump <mrs@cygnus.com> | 1994-12-30 21:03:40 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1994-12-30 21:03:40 +0000 |
commit | 8145f0828c5c795620174ffd6deba9a5a6eb63f6 (patch) | |
tree | 62f52de3e3e5cd9efd558e4adb41a23b685b37da /gcc/cp/decl.c | |
parent | ad0ad21356c50f1509c5ebf6500cf79261f42467 (diff) | |
download | gcc-8145f0828c5c795620174ffd6deba9a5a6eb63f6.zip gcc-8145f0828c5c795620174ffd6deba9a5a6eb63f6.tar.gz gcc-8145f0828c5c795620174ffd6deba9a5a6eb63f6.tar.bz2 |
52th Cygnus<->FSF merge
From-SVN: r8714
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 5d3c2f2..f573994 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -552,7 +552,7 @@ struct binding_level /* Number of decls in `names' that have incomplete structure or union types. */ - unsigned short n_incomplete; + unsigned int n_incomplete; /* 1 for the level that holds the parameters of a function. 2 for the level that holds a class declaration. @@ -2979,6 +2979,16 @@ pushdecl (x) if (++b->n_incomplete == 0) error ("too many incomplete variables at this point"); } + + /* Keep count of variables in this level with incomplete type. */ + /* RTTI TD entries are created while defining the type_info. */ + if (TREE_CODE (x) == VAR_DECL + && TYPE_LANG_SPECIFIC (TREE_TYPE (x)) + && TYPE_BEING_DEFINED (TREE_TYPE (x))) + { + if (++b->n_incomplete == 0) + error ("too many incomplete variables at this point"); + } } if (TREE_CODE (x) == TYPE_DECL && name != NULL_TREE) @@ -8603,6 +8613,10 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, raises) declarator, type); else set_nested_typename (d, TYPE_NESTED_NAME (c), declarator, type); + + DECL_ASSEMBLER_NAME (d) = DECL_NAME (d); + DECL_ASSEMBLER_NAME (d) + = get_identifier (build_overload_name (type, 1, 1)); } } |