+ /* no predicate, follow the only branch */
+ if (!branch_found && unset_predicates->size() != 0) {
+ ASSERT(unset_predicates->size() == 1);
+ Predicate * one_branch = (*unset_predicates)[0];
+
+ if (!next_inst->is_single_location()) {
+ Predicate * another_branch = new Predicate(next_inst);
+ // another_branch->copy_predicate_expr(one_branch);
+
+ uint64_t next_read = next_act->get_reads_from_value();
+ bool isnull = ((void*)next_read == NULL);
+ if (isnull) {
+ one_branch->add_predicate_expr(NULLITY, NULL, 1);
+ another_branch->add_predicate_expr(NULLITY, NULL, 0);
+ } else {
+ another_branch->add_predicate_expr(NULLITY, NULL, 1);
+ one_branch->add_predicate_expr(NULLITY, NULL, 0);
+ }
+
+ curr_pred->add_child(another_branch);
+ another_branch->set_parent(curr_pred);
+ }
+
+ curr_pred = one_branch;
+ branch_found = true;
+ }
+
+ delete unset_predicates;