Print this page
11506 smatch resync

@@ -194,10 +194,11 @@
 
 char *get_constraint_str(struct expression *expr)
 {
         char *name;
 
+        expr = strip_expr(expr);
         if (!expr)
                 return NULL;
         if (expr->type == EXPR_CALL)
                 return get_func_constraint(expr);
         if (expr->type == EXPR_BINOP)

@@ -339,13 +340,12 @@
 }
 
 struct string_list *saved_constraints;
 static void save_new_constraint(const char *con)
 {
-        if (list_has_string(saved_constraints, con))
+        if (!insert_string(&saved_constraints, con))
                 return;
-        insert_string(&saved_constraints, con);
         sql_save_constraint(con);
 }
 
 static void handle_comparison(struct expression *left, int op, struct expression *right)
 {

@@ -358,21 +358,14 @@
 
         /* known values are handled in smatch extra */
         if (get_value(left, &sval) || get_value(right, &sval))
                 return;
 
-        if (local_debug)
-                sm_msg("COMPARE: %s %s %s", expr_to_str(left), show_special(op), expr_to_str(right));
-
         constraint = get_constraint_str(right);
         if (!constraint)
                 return;
-        if (local_debug)
-                sm_msg("EXPR: %s CONSTRAINT %s", expr_to_str(right), constraint);
         constraint_id = constraint_str_to_id(constraint);
-        if (local_debug)
-                sm_msg("CONSTRAINT ID %d", constraint_id);
         if (constraint_id < 0)
                 save_new_constraint(constraint);
         free_string(constraint);
         if (constraint_id < 0)
                 return;

@@ -381,20 +374,14 @@
         constraints = clone_constraint_list(constraints);
         op = negate_gt(orig_op);
         add_constraint(&constraints, remove_unsigned_from_comparison(op), constraint_id);
         state = alloc_constraint_state(constraints);
 
-        if (op == orig_op) {
-                if (local_debug)
-                        sm_msg("SETTING %s true %s", expr_to_str(left), state->name);
+        if (op == orig_op)
                 set_true_false_states_expr(my_id, left, state, NULL);
-        } else {
-                if (local_debug)
-                        sm_msg("SETTING %s false %s", expr_to_str(left), state->name);
-
+        else
                 set_true_false_states_expr(my_id, left, NULL, state);
-        }
 }
 
 static void match_condition(struct expression *expr)
 {
         if (expr->type != EXPR_COMPARE)

@@ -527,10 +514,11 @@
 
 void register_constraints(int id)
 {
         my_id = id;
 
+        set_dynamic_states(my_id);
         add_merge_hook(my_id, &merge_func);
         add_hook(&match_condition, CONDITION_HOOK);
 
         add_hook(&match_caller_info, FUNCTION_CALL_HOOK);
         add_member_info_callback(my_id, struct_member_callback);