54 for(std::size_t i=0; i<
num_sccs; ++i)
85 for(std::set<event_grapht::critical_cyclet>::const_iterator it =
90 for(std::set<event_grapht::critical_cyclet::delayt>::const_iterator
91 p_it=it->unsafe_pairs.begin();
92 p_it!=it->unsafe_pairs.end(); ++
p_it)
97 std::pair<irep_idt, source_locationt>(
104 std::pair<irep_idt, source_locationt>(
116 std::set<event_grapht::critical_cyclet::delayt>
delayed;
118 for(std::set<event_grapht::critical_cyclet>::iterator it =
125 for(std::set<event_grapht::critical_cyclet::delayt>::iterator
126 p_it=it->unsafe_pairs.begin();
127 p_it!=it->unsafe_pairs.end(); ++
p_it)
140 if(!it->unsafe_pairs.empty())
142 std::set<event_grapht::critical_cyclet::delayt>::iterator
143 p_it=it->unsafe_pairs.begin();
148 std::pair<irep_idt, source_locationt>(
155 std::pair<irep_idt, source_locationt>(
163 const std::set<event_grapht::critical_cyclet> &)
166 throw "read first strategy not implemented yet";
170 const std::set<event_grapht::critical_cyclet> &)
173 throw "write first strategy not implemented yet";
219 std::set<event_grapht::critical_cyclet::delayt> edges;
220 for(std::set<event_grapht::critical_cyclet>::iterator
C_j =
224 for(std::set<event_grapht::critical_cyclet::delayt>::const_iterator
e_i=
225 C_j->unsafe_pairs.begin();
226 e_i!=
C_j->unsafe_pairs.end();
246 for(std::set<event_grapht::critical_cyclet::delayt>::iterator
252 std::string name=
"e_"+std::to_string(i);
262 for(std::set<event_grapht::critical_cyclet>::iterator
C_j =
268 std::string name=
"C_"+std::to_string(i);
285 for(std::set<event_grapht::critical_cyclet::delayt>::iterator
291 for(std::set<event_grapht::critical_cyclet>::iterator
C_j =
298 if(
C_j->unsafe_pairs.find(*
e_i)!=
C_j->unsafe_pairs.end())
322 for(std::set<event_grapht::critical_cyclet::delayt>::iterator
333 std::pair<irep_idt, source_locationt>(
340 std::pair<irep_idt, source_locationt>(
349 throw "sorry, minimum interference option requires glpk; "
350 "please recompile goto-instrument with glpk";
355 const std::set<event_grapht::critical_cyclet> &set,
358 for(std::set<event_grapht::critical_cyclet>::const_iterator
362 for(std::set<event_grapht::critical_cyclet::delayt>::const_iterator
363 p_it=it->unsafe_pairs.begin();
364 p_it!=it->unsafe_pairs.end(); ++
p_it)
371 std::pair<irep_idt, source_locationt>(
378 std::pair<irep_idt, source_locationt>(
second_ev.variable,
397 for(std::size_t i=0; i<
num_sccs; ++i)
407 file.open(
"inst.evt");
415 for(std::size_t i=0; i<size; i++)
virtual void clear()
Reset the abstract state.
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
std::multimap< irep_idt, source_locationt > id2cycloc
void instrument_one_event_per_cycle_inserter(const set_of_cyclest &set)
void instrument_my_events(const std::set< event_idt > &events)
void instrument_all_inserter(const set_of_cyclest &set)
void instrument_one_read_per_cycle_inserter(const set_of_cyclest &set)
std::set< event_grapht::critical_cyclet > set_of_cycles
void instrument_with_strategy(instrumentation_strategyt strategy)
std::set< irep_idt > var_to_instr
void instrument_one_write_per_cycle_inserter(const set_of_cyclest &set)
std::multimap< irep_idt, source_locationt > id2loc
void instrument_my_events_inserter(const set_of_cyclest &set, const std::set< event_idt > &events)
void instrument_minimum_interference_inserter(const set_of_cyclest &set)
std::vector< std::set< event_grapht::critical_cyclet > > set_of_cycles_per_SCC
unsigned cost(const event_grapht::critical_cyclet::delayt &e)
cost function
static std::set< event_idt > extract_my_events()
mstreamt & statistics() const
#define UNREACHABLE
This should be used to mark dead code.
instrumentation_strategyt