Print this page
11506 smatch resync


  36 
  37 static int my_id;
  38 
  39 static struct smatch_state *empty_state(struct sm_state *sm)
  40 {
  41         return alloc_estate_empty();
  42 }
  43 
  44 struct smatch_state *merge_is_empty(struct smatch_state *s1, struct smatch_state *s2)
  45 {
  46         return alloc_estate_empty();
  47 }
  48 
  49 static void reset(struct sm_state *sm, struct expression *mod_expr)
  50 {
  51         set_state(my_id, sm->name, sm->sym, alloc_estate_empty());
  52 }
  53 
  54 void __save_imaginary_state(struct expression *expr, struct range_list *true_rl, struct range_list *false_rl)
  55 {


  56         set_true_false_states_expr(my_id, expr, alloc_estate_rl(true_rl), alloc_estate_rl(false_rl));
  57 }
  58 
  59 int get_imaginary_absolute(struct expression *expr, struct range_list **rl)
  60 {
  61         struct smatch_state *state;
  62 
  63         *rl = NULL;
  64 
  65         state = get_state_expr(my_id, expr);
  66         if (!state || !estate_rl(state))
  67                 return 0;
  68 
  69         *rl = estate_rl(state);
  70         return 1;
  71 }
  72 
  73 void register_imaginary_absolute(int id)
  74 {
  75         my_id = id;
  76 

  77         add_unmatched_state_hook(my_id, &empty_state);
  78         add_merge_hook(my_id, &merge_is_empty);
  79         add_modification_hook(my_id, &reset);
  80 }
  81 


  36 
  37 static int my_id;
  38 
  39 static struct smatch_state *empty_state(struct sm_state *sm)
  40 {
  41         return alloc_estate_empty();
  42 }
  43 
  44 struct smatch_state *merge_is_empty(struct smatch_state *s1, struct smatch_state *s2)
  45 {
  46         return alloc_estate_empty();
  47 }
  48 
  49 static void reset(struct sm_state *sm, struct expression *mod_expr)
  50 {
  51         set_state(my_id, sm->name, sm->sym, alloc_estate_empty());
  52 }
  53 
  54 void __save_imaginary_state(struct expression *expr, struct range_list *true_rl, struct range_list *false_rl)
  55 {
  56         if (__in_pre_condition)
  57                 return;
  58         set_true_false_states_expr(my_id, expr, alloc_estate_rl(true_rl), alloc_estate_rl(false_rl));
  59 }
  60 
  61 int get_imaginary_absolute(struct expression *expr, struct range_list **rl)
  62 {
  63         struct smatch_state *state;
  64 
  65         *rl = NULL;
  66 
  67         state = get_state_expr(my_id, expr);
  68         if (!state || !estate_rl(state))
  69                 return 0;
  70 
  71         *rl = estate_rl(state);
  72         return 1;
  73 }
  74 
  75 void register_imaginary_absolute(int id)
  76 {
  77         my_id = id;
  78 
  79         set_dynamic_states(my_id);
  80         add_unmatched_state_hook(my_id, &empty_state);
  81         add_merge_hook(my_id, &merge_is_empty);
  82         add_modification_hook(my_id, &reset);
  83 }
  84