aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/decl.c
diff options
context:
space:
mode:
authorMike Stump <mrs@cygnus.com>1994-12-30 21:03:40 +0000
committerMike Stump <mrs@gcc.gnu.org>1994-12-30 21:03:40 +0000
commit8145f0828c5c795620174ffd6deba9a5a6eb63f6 (patch)
tree62f52de3e3e5cd9efd558e4adb41a23b685b37da /gcc/cp/decl.c
parentad0ad21356c50f1509c5ebf6500cf79261f42467 (diff)
downloadgcc-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.c16
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));
}
}