Tabbing
[c11tester.git] / funcnode.cc
index 2a25bfb9e003563db6d4a511d0aace159ff33e96..e5279bd1fd72598642be43265d4fe039cbd744ba 100644 (file)
@@ -342,7 +342,7 @@ void FuncNode::update_predicate_tree(action_list_t * act_list)
  * @return true if branch found, false otherwise.
  */
 bool FuncNode::follow_branch(Predicate ** curr_pred, FuncInst * next_inst,
-                                                                                                                ModelAction * next_act, SnapVector<Predicate *> * unset_predicates)
+ModelAction * next_act, SnapVector<Predicate *> * unset_predicates)
 {
        /* Check if a branch with func_inst and corresponding predicate exists */
        bool branch_found = false;
@@ -369,33 +369,34 @@ bool FuncNode::follow_branch(Predicate ** curr_pred, FuncInst * next_inst,
                        bool equality;
 
                        switch(pred_expression->token) {
-                       case NOPREDICATE:
-                               predicate_correct = true;
-                               break;
-                       case EQUALITY:
-                               FuncInst * to_be_compared;
-                               ModelAction * last_act;
-
-                               to_be_compared = pred_expression->func_inst;
-                               last_act = to_be_compared->get_associated_act(marker);
-
-                               last_read = last_act->get_reads_from_value();
-                               next_read = next_act->get_reads_from_value();
-                               equality = (last_read == next_read);
-                               if (equality != pred_expression->value)
+                               case NOPREDICATE:
+                                       predicate_correct = true;
+                                       break;
+                               case EQUALITY:
+                                       FuncInst * to_be_compared;
+                                       ModelAction * last_act;
+
+                                       to_be_compared = pred_expression->func_inst;
+                                       last_act = to_be_compared->get_associated_act(marker);
+
+                                       last_read = last_act->get_reads_from_value();
+                                       next_read = next_act->get_reads_from_value();
+                                       equality = (last_read == next_read);
+                                       if (equality != pred_expression->value)
+                                               predicate_correct = false;
+
+                                       break;
+                               case NULLITY:
+                                       next_read = next_act->get_reads_from_value();
+                                       // TODO: implement likely to be null
+                                       equality = ( (void*) (next_read & 0xffffffff) == NULL);
+                                       if (equality != pred_expression->value)
+                                               predicate_correct = false;
+                                       break;
+                               default:
                                        predicate_correct = false;
-
-                               break;
-                       case NULLITY:
-                               next_read = next_act->get_reads_from_value();
-                               equality = ((void*)next_read == NULL);
-                               if (equality != pred_expression->value)
-                                       predicate_correct = false;
-                               break;
-                       default:
-                               predicate_correct = false;
-                               model_print("unkown predicate token\n");
-                               break;
+                                       model_print("unkown predicate token\n");
+                                       break;
                        }
                }
 
@@ -411,8 +412,8 @@ bool FuncNode::follow_branch(Predicate ** curr_pred, FuncInst * next_inst,
 
 /* Infer predicate expressions, which are generated in FuncNode::generate_predicates */
 void FuncNode::infer_predicates(FuncInst * next_inst, ModelAction * next_act,
-                                                                                                                               HashTable<void *, ModelAction *, uintptr_t, 0> * loc_act_map,
-                                                                                                                               SnapVector<struct half_pred_expr *> * half_pred_expressions)
+HashTable<void *, ModelAction *, uintptr_t, 0> * loc_act_map,
+SnapVector<struct half_pred_expr *> * half_pred_expressions)
 {
        void * loc = next_act->get_location();
 
@@ -457,7 +458,7 @@ void FuncNode::infer_predicates(FuncInst * next_inst, ModelAction * next_act,
 
 /* Able to generate complex predicates when there are multiple predciate expressions */
 void FuncNode::generate_predicates(Predicate ** curr_pred, FuncInst * next_inst,
-                                                                                                                                        SnapVector<struct half_pred_expr *> * half_pred_expressions)
+SnapVector<struct half_pred_expr *> * half_pred_expressions)
 {
        if (half_pred_expressions->size() == 0) {
                Predicate * new_pred = new Predicate(next_inst);