aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/class.c
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2002-10-25 15:13:05 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2002-10-25 11:13:05 -0400
commit6eb359685e52f13a7c6236184300b43e5a4d7ca6 (patch)
treeee8ceb671f247299c4b6756beaccd217014712ca /gcc/cp/class.c
parent8c40b097ec9ca1dcc51f7d03a7408dee50331bd4 (diff)
downloadgcc-6eb359685e52f13a7c6236184300b43e5a4d7ca6.zip
gcc-6eb359685e52f13a7c6236184300b43e5a4d7ca6.tar.gz
gcc-6eb359685e52f13a7c6236184300b43e5a4d7ca6.tar.bz2
re PR c++/7228 (ICE when using member template and template function)
PR c++/7228 * cp-tree.h (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Check that lang_type structure exists before accessing field. (SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT): New macro. (CLASSTYPE_REF_FIELDS_NEED_INIT): Similar. (SET_CLASSTYPE_REF_FIELDS_NEED_INIT): New macro. * class.c (check_field_decls): Use new macros. * typeck2.c (process_init_constructor): Remove redundant check for existence of lang_type structure. From-SVN: r58532
Diffstat (limited to 'gcc/cp/class.c')
-rw-r--r--gcc/cp/class.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index c4b49b0..f4b9beb 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -3264,7 +3264,7 @@ check_field_decls (tree t, tree *access_decls,
{
CLASSTYPE_NON_POD_P (t) = 1;
if (DECL_INITIAL (x) == NULL_TREE)
- CLASSTYPE_REF_FIELDS_NEED_INIT (t) = 1;
+ SET_CLASSTYPE_REF_FIELDS_NEED_INIT (t, 1);
/* ARM $12.6.2: [A member initializer list] (or, for an
aggregate, initialization by a brace-enclosed list) is the
@@ -3299,7 +3299,7 @@ check_field_decls (tree t, tree *access_decls,
{
C_TYPE_FIELDS_READONLY (t) = 1;
if (DECL_INITIAL (x) == NULL_TREE)
- CLASSTYPE_READONLY_FIELDS_NEED_INIT (t) = 1;
+ SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT (t, 1);
/* ARM $12.6.2: [A member initializer list] (or, for an
aggregate, initialization by a brace-enclosed list) is the
@@ -3316,8 +3316,9 @@ check_field_decls (tree t, tree *access_decls,
else if (IS_AGGR_TYPE (type))
{
C_TYPE_FIELDS_READONLY (t) |= C_TYPE_FIELDS_READONLY (type);
- CLASSTYPE_READONLY_FIELDS_NEED_INIT (t)
- |= CLASSTYPE_READONLY_FIELDS_NEED_INIT (type);
+ SET_CLASSTYPE_READONLY_FIELDS_NEED_INIT (t,
+ CLASSTYPE_READONLY_FIELDS_NEED_INIT (t)
+ | CLASSTYPE_READONLY_FIELDS_NEED_INIT (type));
}
/* Core issue 80: A nonstatic data member is required to have a