projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- add FE support for MS _AddressOfReturnAddress()
[cparser]
/
walk_statements.c
diff --git
a/walk_statements.c
b/walk_statements.c
index
7247a54
..
1201dd7
100644
(file)
--- a/
walk_statements.c
+++ b/
walk_statements.c
@@
-35,7
+35,6
@@
static void walk_expression(expression_t const *const expr,
return;
case EXPR_UNKNOWN:
return;
case EXPR_UNKNOWN:
- case EXPR_INVALID:
panic("unexpected expr kind");
case EXPR_COMPOUND_LITERAL:
panic("unexpected expr kind");
case EXPR_COMPOUND_LITERAL:
@@
-50,12
+49,6
@@
static void walk_expression(expression_t const *const expr,
walk_expression(expr->conditional.false_expression, callback, env);
return;
walk_expression(expr->conditional.false_expression, callback, env);
return;
- case EXPR_BUILTIN_PREFETCH:
- walk_expression(expr->builtin_prefetch.adr, callback, env);
- walk_expression(expr->builtin_prefetch.rw, callback, env);
- walk_expression(expr->builtin_prefetch.locality, callback, env);
- return;
-
case EXPR_BUILTIN_CONSTANT_P:
walk_expression(expr->builtin_constant.value, callback, env);
return;
case EXPR_BUILTIN_CONSTANT_P:
walk_expression(expr->builtin_constant.value, callback, env);
return;
@@
-82,6
+75,7
@@
static void walk_expression(expression_t const *const expr,
return;
}
return;
}
+ case EXPR_INVALID:
case EXPR_OFFSETOF:
case EXPR_REFERENCE:
case EXPR_REFERENCE_ENUM_VALUE:
case EXPR_OFFSETOF:
case EXPR_REFERENCE:
case EXPR_REFERENCE_ENUM_VALUE:
@@
-91,10
+85,10
@@
static void walk_expression(expression_t const *const expr,
case EXPR_STRING_LITERAL:
case EXPR_WIDE_STRING_LITERAL:
case EXPR_FUNCNAME:
case EXPR_STRING_LITERAL:
case EXPR_WIDE_STRING_LITERAL:
case EXPR_FUNCNAME:
- case EXPR_BUILTIN_SYMBOL:
case EXPR_VA_START:
case EXPR_VA_ARG:
case EXPR_LABEL_ADDRESS:
case EXPR_VA_START:
case EXPR_VA_ARG:
case EXPR_LABEL_ADDRESS:
+ case EXPR_BUILTIN_TYPES_COMPATIBLE_P:
break;
}
break;
}
@@
-116,10
+110,11
@@
static void walk_initializer(const initializer_t *initializer,
}
static void walk_declarations(const entity_t* entity,
}
static void walk_declarations(const entity_t* entity,
- const entity_t* const
end
,
+ const entity_t* const
last
,
statement_callback const callback,
void *const env)
{
statement_callback const callback,
void *const env)
{
+ entity_t const *const end = last != NULL ? last->base.next : NULL;
for (; entity != end; entity = entity->base.next) {
/* we only look at variables */
if (entity->kind != ENTITY_VARIABLE)
for (; entity != end; entity = entity->base.next) {
/* we only look at variables */
if (entity->kind != ENTITY_VARIABLE)
@@
-197,8
+192,7
@@
void walk_statements(statement_t *const stmt, statement_callback const callback,
case STATEMENT_DECLARATION:
walk_declarations(stmt->declaration.declarations_begin,
case STATEMENT_DECLARATION:
walk_declarations(stmt->declaration.declarations_begin,
- stmt->declaration.declarations_end->base.next,
- callback, env);
+ stmt->declaration.declarations_end, callback, env);
return;
case STATEMENT_MS_TRY:
return;
case STATEMENT_MS_TRY:
@@
-206,7
+200,6
@@
void walk_statements(statement_t *const stmt, statement_callback const callback,
walk_statements(stmt->ms_try.final_statement, callback, env);
return;
walk_statements(stmt->ms_try.final_statement, callback, env);
return;
- case STATEMENT_LOCAL_LABEL:
case STATEMENT_INVALID:
case STATEMENT_EMPTY:
case STATEMENT_CONTINUE:
case STATEMENT_INVALID:
case STATEMENT_EMPTY:
case STATEMENT_CONTINUE: