summaryrefslogtreecommitdiffstats
path: root/gcc/cp/decl.c
diff options
context:
space:
mode:
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>1994-12-30 21:03:40 +0000
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>1994-12-30 21:03:40 +0000
commit059103198a5730cc3ec589a541ce373773b028b9 (patch)
tree62f52de3e3e5cd9efd558e4adb41a23b685b37da /gcc/cp/decl.c
parent66a1f2748aa37d578cfbe315f534fb21c0191de5 (diff)
downloadppe42-gcc-059103198a5730cc3ec589a541ce373773b028b9.tar.gz
ppe42-gcc-059103198a5730cc3ec589a541ce373773b028b9.zip
52th Cygnus<->FSF merge
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8714 138bc75d-0d04-0410-961f-82ee72b054a4
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 5d3c2f2c264..f57399421e9 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));
}
}
OpenPOWER on IntegriCloud