Print this page
new smatch
@@ -141,13 +141,10 @@
static void call_modification_hooks(struct expression *expr, struct expression *mod_expr, int late)
{
char *name;
struct symbol *sym;
- if (late == LATE)
- update_mtag_data(expr);
-
name = expr_to_known_chunk_sym(expr, &sym);
if (!name)
goto free;
call_modification_hooks_name_sym(name, sym, mod_expr, late);
free:
@@ -154,11 +151,11 @@
free_string(name);
}
static void db_param_add(struct expression *expr, int param, char *key, char *value)
{
- struct expression *arg, *gen_expr;
+ struct expression *arg;
char *name, *other_name;
struct symbol *sym, *other_sym;
while (expr->type == EXPR_ASSIGNMENT)
expr = strip_expr(expr->right);
@@ -167,14 +164,10 @@
arg = get_argument_from_call_expr(expr->args, param);
if (!arg)
return;
- gen_expr = gen_expression_from_key(arg, key);
- if (gen_expr)
- update_mtag_data(gen_expr);
-
name = get_variable_from_key(arg, key, &sym);
if (!name || !sym)
goto free;
__in_fake_assign++;
@@ -224,27 +217,18 @@
}
static void asm_expr(struct statement *stmt, int late)
{
struct expression *expr;
- int state = 0;
FOR_EACH_PTR(stmt->asm_outputs, expr) {
- switch (state) {
- case 0: /* identifier */
- case 1: /* constraint */
- state++;
+ if (expr->type != EXPR_ASM_OPERAND)
continue;
- case 2: /* expression */
- state = 0;
- call_modification_hooks(expr, NULL, late);
- continue;
- }
+ call_modification_hooks(expr->expr, NULL, late);
} END_FOR_EACH_PTR(expr);
}
-
static void match_assign_early(struct expression *expr)
{
match_assign(expr, EARLY);
}