func_inst_map(),
inst_list(),
entry_insts(),
- thrd_read_map(),
- predicate_tree_backedges()
+ thrd_read_map()
{}
/* Check whether FuncInst with the same type, position, and location
{
if (act_list == NULL || act_list->size() == 0)
return;
-
/*
if (predicate_tree_initialized) {
return;
it = it->getNext();
}
- model_print("function %s\n", func_name);
- print_predicate_tree();
+// model_print("function %s\n", func_name);
+// print_predicate_tree();
}
/* Given curr_pred and next_inst, find the branch following curr_pred that contains next_inst and the correct predicate
/* Store the values read by atomic read actions per memory location for each thread */
ModelVector<read_map_t *> thrd_read_map;
- HashTable<FuncInst *, Predicate *, uintptr_t, 0, model_malloc, model_calloc, model_free> predicate_tree_backedges;
};
#endif /* __FUNCNODE_H__ */
entry_predicate(is_entry),
pred_expressions(),
children(),
- parents()
+ parents(),
+ backedge(NULL)
{}
unsigned int pred_expr_hash(struct pred_expr * expr)
private:
FuncInst * func_inst;
bool entry_predicate;
+
/* may have multiple predicates */
PredExprSet pred_expressions;
ModelVector<Predicate *> children;
ModelVector<Predicate *> parents;
+
/* assume almost one back edge exists */
Predicate * backedge;
};