projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix a few warnings reported by cparser
[cparser]
/
parser.c
diff --git
a/parser.c
b/parser.c
index
1f30b16
..
5ed7914
100644
(file)
--- a/
parser.c
+++ b/
parser.c
@@
-89,7
+89,6
@@
static scope_t *current_scope = NULL;
/** Point to the current function declaration if inside a function. */
static function_t *current_function = NULL;
static entity_t *current_entity = NULL;
/** Point to the current function declaration if inside a function. */
static function_t *current_function = NULL;
static entity_t *current_entity = NULL;
-static entity_t *current_init_decl = NULL;
static switch_statement_t *current_switch = NULL;
static statement_t *current_loop = NULL;
static statement_t *current_parent = NULL;
static switch_statement_t *current_switch = NULL;
static statement_t *current_loop = NULL;
static statement_t *current_parent = NULL;
@@
-101,8
+100,6
@@
static label_statement_t *label_first = NULL;
static label_statement_t **label_anchor = NULL;
/** current translation unit. */
static translation_unit_t *unit = NULL;
static label_statement_t **label_anchor = NULL;
/** current translation unit. */
static translation_unit_t *unit = NULL;
-/** true if we are in a type property context (evaluation only for type) */
-static bool in_type_prop = false;
/** true if we are in an __extension__ context. */
static bool in_gcc_extension = false;
static struct obstack temp_obst;
/** true if we are in an __extension__ context. */
static bool in_gcc_extension = false;
static struct obstack temp_obst;
@@
-124,6
+121,7
@@
static elf_visibility_tag_t default_visibility = ELF_VISIBILITY_DEFAULT;
#define POP_SCOPE() (assert(current_scope == new_scope), scope_pop(old_scope), environment_pop_to(top))
#define PUSH_EXTENSION() \
#define POP_SCOPE() (assert(current_scope == new_scope), scope_pop(old_scope), environment_pop_to(top))
#define PUSH_EXTENSION() \
+ (void)0; \
bool const old_gcc_extension = in_gcc_extension; \
while (next_if(T___extension__)) { \
in_gcc_extension = true; \
bool const old_gcc_extension = in_gcc_extension; \
while (next_if(T___extension__)) { \
in_gcc_extension = true; \
@@
-2583,9
+2581,6
@@
static type_t *parse_typeof(void)
expression_t *expression = NULL;
expression_t *expression = NULL;
- bool old_type_prop = in_type_prop;
- in_type_prop = true;
-
switch (token.type) {
case T_IDENTIFIER:
if (is_typedef_symbol(token.symbol)) {
switch (token.type) {
case T_IDENTIFIER:
if (is_typedef_symbol(token.symbol)) {
@@
-2598,7
+2593,6
@@
static type_t *parse_typeof(void)
}
break;
}
}
break;
}
- in_type_prop = old_type_prop;
rem_anchor_token(')');
expect(')', end_error);
rem_anchor_token(')');
expect(')', end_error);
@@
-2780,12
+2774,11
@@
static entity_t *create_error_entity(symbol_t *symbol, entity_kind_tag_t kind)
static void parse_declaration_specifiers(declaration_specifiers_t *specifiers)
{
static void parse_declaration_specifiers(declaration_specifiers_t *specifiers)
{
- type_t *type = NULL;
- type_qualifiers_t qualifiers = TYPE_QUALIFIER_NONE;
- unsigned type_specifiers = 0;
- bool newtype = false;
- bool saw_error = false;
- bool old_gcc_extension = in_gcc_extension;
+ type_t *type = NULL;
+ type_qualifiers_t qualifiers = TYPE_QUALIFIER_NONE;
+ unsigned type_specifiers = 0;
+ bool newtype = false;
+ bool saw_error = false;
memset(specifiers, 0, sizeof(*specifiers));
specifiers->source_position = token.source_position;
memset(specifiers, 0, sizeof(*specifiers));
specifiers->source_position = token.source_position;
@@
-2857,11
+2850,6
@@
wrong_thread_storage_class:
MATCH_TYPE_QUALIFIER(T___uptr, TYPE_QUALIFIER_UPTR);
MATCH_TYPE_QUALIFIER(T___sptr, TYPE_QUALIFIER_SPTR);
MATCH_TYPE_QUALIFIER(T___uptr, TYPE_QUALIFIER_UPTR);
MATCH_TYPE_QUALIFIER(T___sptr, TYPE_QUALIFIER_SPTR);
- case T___extension__:
- next_token();
- in_gcc_extension = true;
- break;
-
/* type specifiers */
#define MATCH_SPECIFIER(token, specifier, name) \
case token: \
/* type specifiers */
#define MATCH_SPECIFIER(token, specifier, name) \
case token: \
@@
-3012,8
+3000,6
@@
wrong_thread_storage_class:
finish_specifiers:
specifiers->attributes = parse_attributes(specifiers->attributes);
finish_specifiers:
specifiers->attributes = parse_attributes(specifiers->attributes);
- in_gcc_extension = old_gcc_extension;
-
if (type == NULL || (saw_error && type_specifiers != 0)) {
atomic_type_kind_t atomic_type;
if (type == NULL || (saw_error && type_specifiers != 0)) {
atomic_type_kind_t atomic_type;
@@
-4358,10
+4344,8
@@
static void parse_init_declarator_rest(entity_t *entity)
env.type = orig_type;
env.must_be_constant = must_be_constant;
env.entity = entity;
env.type = orig_type;
env.must_be_constant = must_be_constant;
env.entity = entity;
- current_init_decl = entity;
initializer_t *initializer = parse_initializer(&env);
initializer_t *initializer = parse_initializer(&env);
- current_init_decl = NULL;
if (entity->kind == ENTITY_VARIABLE) {
/* §6.7.5:22 array initializers for arrays with unknown size
if (entity->kind == ENTITY_VARIABLE) {
/* §6.7.5:22 array initializers for arrays with unknown size
@@
-6294,11
+6278,6
@@
static expression_t *parse_reference(void)
check_deprecated(&pos, entity);
check_deprecated(&pos, entity);
- if (entity == current_init_decl && !in_type_prop && entity->kind == ENTITY_VARIABLE) {
- current_init_decl = NULL;
- warningf(WARN_INIT_SELF, &pos, "variable '%#N' is initialized by itself", entity);
- }
-
return expression;
}
return expression;
}
@@
-7048,10
+7027,6
@@
static expression_t *parse_typeprop(expression_kind_t const kind)
eat(kind == EXPR_SIZEOF ? T_sizeof : T___alignof__);
eat(kind == EXPR_SIZEOF ? T_sizeof : T___alignof__);
- /* we only refer to a type property, mark this case */
- bool old = in_type_prop;
- in_type_prop = true;
-
type_t *orig_type;
expression_t *expression;
if (token.type == '(' && is_declaration_specifier(look_ahead(1))) {
type_t *orig_type;
expression_t *expression;
if (token.type == '(' && is_declaration_specifier(look_ahead(1))) {
@@
-7108,7
+7083,6
@@
typeprop_expression:
}
end_error:
}
end_error:
- in_type_prop = old;
return tp_expression;
}
return tp_expression;
}
@@
-10431,7
+10405,7
@@
static void parse_external(void)
case '&': /* & x; -> int& x; (and error later, because C++ has no
implicit int) */
case '*': /* * x; -> int* x; */
case '&': /* & x; -> int& x; (and error later, because C++ has no
implicit int) */
case '*': /* * x; -> int* x; */
- case '(':
;
/* (x); -> int (x); */
+ case '(':
/* (x); -> int (x); */
PUSH_EXTENSION();
parse_external_declaration();
POP_EXTENSION();
PUSH_EXTENSION();
parse_external_declaration();
POP_EXTENSION();