Print this page
new smatch

*** 141,153 **** 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: --- 141,150 ----
*** 154,164 **** free_string(name); } static void db_param_add(struct expression *expr, int param, char *key, char *value) { ! struct expression *arg, *gen_expr; char *name, *other_name; struct symbol *sym, *other_sym; while (expr->type == EXPR_ASSIGNMENT) expr = strip_expr(expr->right); --- 151,161 ---- free_string(name); } static void db_param_add(struct expression *expr, int param, char *key, char *value) { ! struct expression *arg; char *name, *other_name; struct symbol *sym, *other_sym; while (expr->type == EXPR_ASSIGNMENT) expr = strip_expr(expr->right);
*** 167,180 **** 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++; --- 164,173 ----
*** 224,250 **** } 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++; continue; ! case 2: /* expression */ ! state = 0; ! call_modification_hooks(expr, NULL, late); ! continue; ! } } END_FOR_EACH_PTR(expr); } - static void match_assign_early(struct expression *expr) { match_assign(expr, EARLY); } --- 217,234 ---- } static void asm_expr(struct statement *stmt, int late) { struct expression *expr; FOR_EACH_PTR(stmt->asm_outputs, expr) { ! if (expr->type != EXPR_ASM_OPERAND) 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); }