summaryrefslogtreecommitdiff
path: root/gcc/c-tree.h
diff options
context:
space:
mode:
authorfroydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-26 19:10:17 +0000
committerfroydnj <froydnj@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-26 19:10:17 +0000
commit561ba0aa5e666cce088a35e7e82acd4d7d570c9d (patch)
tree5d76eb6d77117ebeeac19e76ee6bd90f9bc662bb /gcc/c-tree.h
parent609c710b62c353e5c6732db421774980ef5f0cc4 (diff)
downloadgcc-561ba0aa5e666cce088a35e7e82acd4d7d570c9d.tar.gz
* c-parser.c (struct c_token): Move location field up.
* c-tree.h (struct c_typespec): Move expr_const_operands field up. (struct c_declspecs): Convert typespec_word, storage_class, and default_int_p into bitfields. (struct c_declarator): Move loc field up. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158744 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-tree.h')
-rw-r--r--gcc/c-tree.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 681fe9b4ffe..50ed9db08a8 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -160,6 +160,9 @@ enum c_typespec_kind {
struct c_typespec {
/* What kind of type specifier this is. */
enum c_typespec_kind kind;
+ /* Whether the expression has operands suitable for use in constant
+ expressions. */
+ bool expr_const_operands;
/* The specifier itself. */
tree spec;
/* An expression to be evaluated before the type specifier, in the
@@ -171,9 +174,6 @@ struct c_typespec {
expression itself (as opposed to the array sizes) forms no part
of the type and so needs to be recorded separately. */
tree expr;
- /* Whether the expression has operands suitable for use in constant
- expressions. */
- bool expr_const_operands;
};
/* A storage class specifier. */
@@ -220,11 +220,11 @@ struct c_declspecs {
NULL; attributes (possibly from multiple lists) will be passed
separately. */
tree attrs;
- /* Any type specifier keyword used such as "int", not reflecting
- modifiers such as "short", or cts_none if none. */
- enum c_typespec_keyword typespec_word;
/* The storage class specifier, or csc_none if none. */
enum c_storage_class storage_class;
+ /* Any type specifier keyword used such as "int", not reflecting
+ modifiers such as "short", or cts_none if none. */
+ ENUM_BITFIELD (c_typespec_keyword) typespec_word : 8;
/* Whether any expressions in typeof specifiers may appear in
constant expressions. */
BOOL_BITFIELD expr_const_operands : 1;
@@ -252,7 +252,7 @@ struct c_declspecs {
BOOL_BITFIELD deprecated_p : 1;
/* Whether the type defaulted to "int" because there were no type
specifiers. */
- BOOL_BITFIELD default_int_p;
+ BOOL_BITFIELD default_int_p : 1;
/* Whether "long" was specified. */
BOOL_BITFIELD long_p : 1;
/* Whether "long" was specified more than once. */
@@ -319,9 +319,9 @@ struct c_arg_info {
struct c_declarator {
/* The kind of declarator. */
enum c_declarator_kind kind;
+ location_t id_loc; /* Currently only set for cdk_id, cdk_array. */
/* Except for cdk_id, the contained declarator. For cdk_id, NULL. */
struct c_declarator *declarator;
- location_t id_loc; /* Currently only set for cdk_id, cdk_array. */
union {
/* For identifiers, an IDENTIFIER_NODE or NULL_TREE if an abstract
declarator. */