From: Jason Merrill Date: Fri, 23 Oct 1998 02:26:32 +0000 (+0000) Subject: cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0aaa90896608511a17211385ede533ef5b46327e;p=gcc.git cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays. * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays. (CP_TYPE_VOLATILE): Likewise. * decl.c (grokdeclarator): Use them. * tree.c (canonical_type_variant): Likewise. From-SVN: r23244 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e614e723c25..da9cad24370 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +1998-10-23 Jason Merrill + + * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays. + (CP_TYPE_VOLATILE): Likewise. + * decl.c (grokdeclarator): Use them. + * tree.c (canonical_type_variant): Likewise. + 1998-10-22 Martin von Löwis * parse.y (named_class_head): Push into class while parsing the diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 51c531bb558..ad874a12b18 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -514,6 +514,15 @@ enum languages { lang_c, lang_cplusplus, lang_java }; /* The _DECL for this _TYPE. */ #define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE))) +#define CP_TYPE_READONLY(NODE) \ + (TREE_CODE (NODE) == ARRAY_TYPE \ + ? TYPE_READONLY (TREE_TYPE (NODE)) \ + : TYPE_READONLY (NODE)) +#define CP_TYPE_VOLATILE(NODE) \ + (TREE_CODE (NODE) == ARRAY_TYPE \ + ? TYPE_VOLATILE (TREE_TYPE (NODE)) \ + : TYPE_VOLATILE (NODE)) + /* Nonzero if T is a class (or struct or union) type. Also nonzero for template type parameters and typename types. Despite its name, this macro has nothing to do with the definition of aggregate given diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 39b8b7d5ab1..c98db982014 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9196,8 +9196,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) explicit specification or via a typedef. Likewise for VOLATILEP. */ - constp = !! RIDBIT_SETP (RID_CONST, specbits) + TYPE_READONLY (type); - volatilep = !! RIDBIT_SETP (RID_VOLATILE, specbits) + TYPE_VOLATILE (type); + constp = !!RIDBIT_SETP (RID_CONST, specbits) + CP_TYPE_READONLY (type); + volatilep = !!RIDBIT_SETP (RID_VOLATILE, specbits) + CP_TYPE_VOLATILE (type); type = cp_build_type_variant (type, constp, volatilep); staticp = 0; inlinep = !! RIDBIT_SETP (RID_INLINE, specbits); diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index b943b834f4a..15be5d798d2 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -501,18 +501,8 @@ tree canonical_type_variant (t) tree t; { - int constp, volatilep; - if (TREE_CODE (t) == ARRAY_TYPE) - { - constp = TYPE_READONLY (TREE_TYPE (t)); - volatilep = TYPE_VOLATILE (TREE_TYPE (t)); - } - else - { - constp = TYPE_READONLY (t); - volatilep = TYPE_VOLATILE (t); - } - return cp_build_type_variant (TYPE_MAIN_VARIANT (t), constp, volatilep); + return cp_build_type_variant (TYPE_MAIN_VARIANT (t), CP_TYPE_READONLY (t), + CP_TYPE_VOLATILE (t)); } /* Add OFFSET to all base types of T.