aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorJanis Johnson <janis187@us.ibm.com>2010-01-21 05:49:35 +0000
committerJason Merrill <jason@gcc.gnu.org>2010-01-21 00:49:35 -0500
commitebf0bf7f49c75c98d4c51e8c451eae068a2dd647 (patch)
tree3bec735a0f06546a748f8a6b206f44f1a8b31297 /gcc/tree.c
parent907c6efdbc255042ab1ece9179511b78f426cb00 (diff)
downloadgcc-ebf0bf7f49c75c98d4c51e8c451eae068a2dd647.zip
gcc-ebf0bf7f49c75c98d4c51e8c451eae068a2dd647.tar.gz
gcc-ebf0bf7f49c75c98d4c51e8c451eae068a2dd647.tar.bz2
tree.h (TYPE_TRANSPARENT_UNION): Replace with ...
* tree.h (TYPE_TRANSPARENT_UNION): Replace with ... (TYPE_TRANSPARENT_AGGR): this, for union and record. * calls.c (initialize argument_information): Handle it. * c-common.c (handle_transparent_union_attribute): Use new name. * c-decl.c (finish_struct): Ditto. * c-typeck.c (type_lists_compatible_p): Ditto. (convert_for_assignment): Use new name and also handle record. * function.c (aggregate_value_p): Handle it. (pass_by_reference): Ditto. (assign_parm_data_types): Ditto. * print-tree.c (print_node): Ditto. * lto-streamer-in.c (unpack_ts_type_value_fields): Ditto. * lto-streamer-out.c (pack_ts_type_value_fields): Ditto. * tree.c (first_field): New fn. gcc/cp/ * mangle.c (write_type): Mangle transparent record as member type. * semantics.c (begin_class_definition): Recognize decimal classes and set TYPE_TRANSPARENT_AGGR. Co-Authored-By: Jason Merrill <jason@redhat.com> From-SVN: r156106
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 7fa7649..5d44841 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1983,6 +1983,18 @@ fields_length (const_tree type)
return count;
}
+/* Returns the first FIELD_DECL in the TYPE_FIELDS of the RECORD_TYPE or
+ UNION_TYPE TYPE, or NULL_TREE if none. */
+
+tree
+first_field (const_tree type)
+{
+ tree t = TYPE_FIELDS (type);
+ while (t && TREE_CODE (t) != FIELD_DECL)
+ t = TREE_CHAIN (t);
+ return t;
+}
+
/* Concatenate two chains of nodes (chained through TREE_CHAIN)
by modifying the last node in chain 1 to point to chain 2.
This is the Lisp primitive `nconc'. */