diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 2004-03-18 15:58:49 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2004-03-18 15:58:49 -0500 |
commit | eb34af89c78f8b04af925cc272e4462c0316f54b (patch) | |
tree | 0875ec0eb3d6d6c3b4e1cf03f0041e6817f9baa2 /gcc/cp | |
parent | 2171cb855efea2f8c6b71a5ed57bf97dd358b6c2 (diff) | |
download | gcc-eb34af89c78f8b04af925cc272e4462c0316f54b.zip gcc-eb34af89c78f8b04af925cc272e4462c0316f54b.tar.gz gcc-eb34af89c78f8b04af925cc272e4462c0316f54b.tar.bz2 |
tree.h (TREE_CHECK2, [...]): New macros.
* tree.h (TREE_CHECK2, TREE_CHECK3, TREE_CHECK5): New macros.
(tree_check2_failed, tree_check3_failed, tree_check5_failed): New decl.
(FUNC_OR_METHOD_CHECK, SET_ARRAY_OR_VECTOR_CHECK): New macros.
(REC_OR_UNION_CHECK, NUMERICAL_TYPE_CHECK): Likewise.
(TYPE_VALUES, TYPE_DOMAIN, TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD):
Protect with proper check.
(TYPE_ARG_TYPES, TYPE_METHOD_BASETYPE, TYPE_OFFSET_BASETYPE): Likewise.
(TYPE_MIN_VALUE, TYPE_MAX_VALUE): Likewise.
* tree.c (type_hash_eq): Rewrite to access proper fields for each type.
(tree_check2_failed, tree_check3_failed, tree_check5_failed): New.
* c-typeck.c (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
* dwarf2out.c (gen_enumeration_type_die): Use TYPE_VALUES,
not TYPE_FIELDS.
* cp/class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
* cp/error.c (dump_type): Use TYPEOF_TYPE_EXPR.
* cp/pt.c (tsubst): Likewise.
* cp/semantics.c (finish_typeof): Likewise.
* cp/search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
and TEMPLATE_TYPE_PARM.
* cp/typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
(build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
* java/java-tree.h: Changes throughout to add checking to macros
and numerous whitespace changes.
(VAR_OR_FIELD_CHECK): New macro.
* java/jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC,
FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL.
* ada/ada-tree.h (TYPE_LEFT_JUSTIFIED_MODULAR_P): Add checking.
(TYPE_CONTAINS_TEMPLATE_P, TYPE_OBJECT_RECORD_TYPE): Likewise.
(TYPE_RM_SIZE_INT): Directly use type.values.
(TREE_LOOP_ID): Clean up check.
* ada/decl.c (gnat_to_gnu_entity, case E_Enumeration_Type): Use
TYPE_VALUES, not TYPE_FIELDS.
* ada/trans.c (convert_with_check): Delay access of bounds of basetype
until sure is numeric.
From-SVN: r79638
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/cp/class.c | 4 | ||||
-rw-r--r-- | gcc/cp/error.c | 2 | ||||
-rw-r--r-- | gcc/cp/pt.c | 4 | ||||
-rw-r--r-- | gcc/cp/search.c | 11 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 12 |
7 files changed, 33 insertions, 13 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 408fa1c..9ce136b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2004-03-18 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + * class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS. + * error.c (dump_type): Use TYPEOF_TYPE_EXPR. + * pt.c (tsubst): Likewise. + * semantics.c (finish_typeof): Likewise. + * search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE, + and TEMPLATE_TYPE_PARM. + * typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN. + (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES. + 2004-03-16 Mark Mitchell <mark@codesourcery.com> PR c++/14586 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index eddfda8..de0517f 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1422,8 +1422,8 @@ finish_struct_bits (tree t) TYPE_POLYMORPHIC_P (variants) = TYPE_POLYMORPHIC_P (t); TYPE_USES_VIRTUAL_BASECLASSES (variants) = TYPE_USES_VIRTUAL_BASECLASSES (t); /* Copy whatever these are holding today. */ - TYPE_MIN_VALUE (variants) = TYPE_MIN_VALUE (t); - TYPE_MAX_VALUE (variants) = TYPE_MAX_VALUE (t); + TYPE_VFIELD (variants) = TYPE_VFIELD (t); + TYPE_METHODS (variants) = TYPE_METHODS (t); TYPE_FIELDS (variants) = TYPE_FIELDS (t); TYPE_SIZE (variants) = TYPE_SIZE (t); TYPE_SIZE_UNIT (variants) = TYPE_SIZE_UNIT (t); diff --git a/gcc/cp/error.c b/gcc/cp/error.c index bbd90c9d..5b2490e 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -404,7 +404,7 @@ dump_type (tree t, int flags) case TYPEOF_TYPE: pp_string (cxx_pp, "__typeof ("); - dump_expr (TYPE_FIELDS (t), flags & ~TFF_EXPR_IN_PARENS); + dump_expr (TYPEOF_TYPE_EXPR (t), flags & ~TFF_EXPR_IN_PARENS); pp_right_paren (cxx_pp); break; diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 6001b1c..365cb18 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7223,8 +7223,8 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl) { tree type; - type = finish_typeof (tsubst_expr (TYPE_FIELDS (t), args, complain, - in_decl)); + type = finish_typeof (tsubst_expr (TYPEOF_TYPE_EXPR (t), args, + complain, in_decl)); return cp_build_qualified_type_real (type, cp_type_quals (t) | cp_type_quals (type), diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 5b66000..30dc0d2 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -2249,7 +2249,16 @@ dfs_unuse_fields (tree binfo, void *data ATTRIBUTE_UNUSED) tree type = TREE_TYPE (binfo); tree fields; - for (fields = TYPE_FIELDS (type); fields; fields = TREE_CHAIN (fields)) + if (TREE_CODE (type) == TYPENAME_TYPE) + fields = TYPENAME_TYPE_FULLNAME (type); + else if (TREE_CODE (type) == TYPEOF_TYPE) + fields = TYPEOF_TYPE_EXPR (type); + else if (TREE_CODE (type) == TEMPLATE_TYPE_PARM) + fields = TEMPLATE_TYPE_PARM_INDEX (type); + else + fields = TYPE_FIELDS (type); + + for (; fields; fields = TREE_CHAIN (fields)) { if (TREE_CODE (fields) != FIELD_DECL || DECL_ARTIFICIAL (fields)) continue; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 9142a2c..e7d3771 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2685,7 +2685,7 @@ finish_typeof (tree expr) if (type_dependent_expression_p (expr)) { type = make_aggr_type (TYPEOF_TYPE); - TYPE_FIELDS (type) = expr; + TYPEOF_TYPE_EXPR (type) = expr; return type; } diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 31ca3e0..10103c8 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -953,12 +953,12 @@ comptypes (tree t1, tree t2, int strict) /* If either type is the internal version of sizetype, use the language version. */ if (TREE_CODE (t1) == INTEGER_TYPE && TYPE_IS_SIZETYPE (t1) - && TYPE_DOMAIN (t1)) - t1 = TYPE_DOMAIN (t1); + && TYPE_ORIG_SIZE_TYPE (t1)) + t1 = TYPE_ORIG_SIZE_TYPE (t1); if (TREE_CODE (t2) == INTEGER_TYPE && TYPE_IS_SIZETYPE (t2) - && TYPE_DOMAIN (t2)) - t2 = TYPE_DOMAIN (t2); + && TYPE_ORIG_SIZE_TYPE (t2)) + t2 = TYPE_ORIG_SIZE_TYPE (t2); if (TYPE_PTRMEMFUNC_P (t1)) t1 = TYPE_PTRMEMFUNC_FN_TYPE (t1); @@ -2197,8 +2197,8 @@ build_array_ref (tree array, tree idx) would get a crash in store_bit_field/extract_bit_field when trying to access a non-existent part of the register. */ if (TREE_CODE (idx) == INTEGER_CST - && TYPE_VALUES (TREE_TYPE (array)) - && ! int_fits_type_p (idx, TYPE_VALUES (TREE_TYPE (array)))) + && TYPE_DOMAIN (TREE_TYPE (array)) + && ! int_fits_type_p (idx, TYPE_DOMAIN (TREE_TYPE (array)))) { if (!cxx_mark_addressable (array)) return error_mark_node; |