- /* Reset locations when new executions start */
- if (inst->get_execution_number() != curr_execution_number) {
- inst->set_location(act->get_location());
- inst->set_execution_number(curr_execution_number);
+ /* Volatile variables that use ++ or -- syntax may result in read and write actions with the same position */
+ if (func_inst->get_type() != act->get_type()) {
+ FuncInst * collision_inst = func_inst->search_in_collision(act);
+
+ if (collision_inst == NULL) {
+ collision_inst = create_new_inst(act);
+ func_inst->add_to_collision(collision_inst);
+ return;
+ } else {
+ func_inst = collision_inst;