// ------------------------------------------------------------
// Place the "call exit_intervals (program.sum) " at all exits:
//
// ----------------------------------
// Make an iterator over all exit stmts
// ----------------------------------
for (Iterator<Statement> exit_stmts =
pgm.stmts().stmts_of_type(RETURN_STMT, STOP_STMT);
exit_stmts.valid();
++exit_stmts) {
Statement *call_exit;
Statement &this_exit = exit_stmts.current();
if (_mode == TIMING) {
if (first_exit) {
call_exit =
new CallStmt(pgm.stmts().new_tag(),
exit_intervals,
comma(constant(_fortran_sumfile)));
first_exit = 0;
}
else {
call_exit =
new CallStmt(pgm.stmts().new_tag(),
exit_intervals->clone(),
comma(constant(_fortran_sumfile)));
}
} // end if mode == TIMING
else { // mode == TRIPCOUNT
if (first_exit) {
call_exit =
new CallStmt(pgm.stmts().new_tag(),
exit_intervals,
comma(constant(_fortran_tcntfile)));
first_exit = 0;
}
else {
call_exit =
new CallStmt(pgm.stmts().new_tag(),
exit_intervals->clone(),
comma(constant(_fortran_tcntfile)));
}
} // end else [mode == TRIPCOUNT]
// Add before the exit
pgm.stmts().ins_before(call_exit, &this_exit);
}
}