diff options
author | Arnaud Charlet <charlet@adacore.com> | 2010-09-08 06:12:55 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-09-08 08:12:55 +0200 |
commit | 7370e0da63c435435889f8d752836a436ef476bf (patch) | |
tree | 2c841516224256edebe9f4583216e9213ec8260a /gcc | |
parent | e0d4c0b3e5dd120db562995f8d3ba99885012c73 (diff) | |
download | gcc-7370e0da63c435435889f8d752836a436ef476bf.zip gcc-7370e0da63c435435889f8d752836a436ef476bf.tar.gz gcc-7370e0da63c435435889f8d752836a436ef476bf.tar.bz2 |
c-tree.h, c-decl.c (build_enumerator): Add location parameter.
* c-tree.h, c-decl.c (build_enumerator): Add location parameter.
* c-parser.c (c_parser_enum_specifier): Adjust call to build_enumerator.
From-SVN: r163988
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-decl.c | 7 | ||||
-rw-r--r-- | gcc/c-parser.c | 6 | ||||
-rw-r--r-- | gcc/c-tree.h | 3 |
4 files changed, 14 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5fe7ded..dc5a194 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-09-08 Arnaud Charlet <charlet@adacore.com> + + * c-tree.h, c-decl.c (build_enumerator): Add location parameter. + * c-parser.c (c_parser_enum_specifier): Adjust call to build_enumerator. + 2010-09-08 Kenneth Zadeck <zadeck@naturalbridge.com> PR doc/45587 * doc/md.texi: Fixed modes on several standard pattern names. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 10600c8..c7babb5 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -7343,12 +7343,13 @@ finish_enum (tree enumtype, tree values, tree attributes) /* Build and install a CONST_DECL for one value of the current enumeration type (one that was begun with start_enum). - LOC is the location of the enumerator. + DECL_LOC is the location of the enumerator. + LOC is the location of the '=' operator if any, DECL_LOC otherwise. Return a tree-list containing the CONST_DECL and its value. Assignment of sequential values by default is handled here. */ tree -build_enumerator (location_t loc, +build_enumerator (location_t decl_loc, location_t loc, struct c_enum_contents *the_enum, tree name, tree value) { tree decl, type; @@ -7436,7 +7437,7 @@ build_enumerator (location_t loc, >= TYPE_PRECISION (integer_type_node) && TYPE_UNSIGNED (type))); - decl = build_decl (loc, CONST_DECL, name, type); + decl = build_decl (decl_loc, CONST_DECL, name, type); DECL_INITIAL (decl) = convert (type, value); pushdecl (decl); diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 13e6350..666f418 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -1833,7 +1833,7 @@ c_parser_enum_specifier (c_parser *parser) bool seen_comma; c_token *token; location_t comma_loc = UNKNOWN_LOCATION; /* Quiet warning. */ - location_t value_loc; + location_t decl_loc, value_loc; if (c_parser_next_token_is_not (parser, CPP_NAME)) { c_parser_error (parser, "expected identifier"); @@ -1845,7 +1845,7 @@ c_parser_enum_specifier (c_parser *parser) enum_id = token->value; /* Set the location in case we create a decl now. */ c_parser_set_source_position_from_token (token); - value_loc = token->location; + decl_loc = value_loc = token->location; c_parser_consume_token (parser); if (c_parser_next_token_is (parser, CPP_EQ)) { @@ -1855,7 +1855,7 @@ c_parser_enum_specifier (c_parser *parser) } else enum_value = NULL_TREE; - enum_decl = build_enumerator (value_loc, + enum_decl = build_enumerator (decl_loc, value_loc, &the_enum, enum_id, enum_value); TREE_CHAIN (enum_decl) = values; values = enum_decl; diff --git a/gcc/c-tree.h b/gcc/c-tree.h index a04d45c..ff349e3 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -427,7 +427,8 @@ extern int quals_from_declspecs (const struct c_declspecs *); extern struct c_declarator *build_array_declarator (location_t, tree, struct c_declspecs *, bool, bool); -extern tree build_enumerator (location_t, struct c_enum_contents *, tree, tree); +extern tree build_enumerator (location_t, location_t, struct c_enum_contents *, + tree, tree); extern tree check_for_loop_decls (location_t); extern void mark_forward_parm_decls (void); extern void declare_parm_level (void); |