struct loop *loop;
basic_block condition_bb = NULL;
edge latch_edge;
- gcov_type trip_count = 0;
+ HOST_WIDE_INT trip_count, max_trip_count;
loop_optimizer_init (LOOPS_HAVE_PREHEADERS
| LOOPS_HAVE_RECORDED_EXITS);
get_ebb_head_tail (bb, bb, &head, &tail);
latch_edge = loop_latch_edge (loop);
gcc_assert (single_exit (loop));
- if (single_exit (loop)->count () > profile_count::zero ())
- trip_count = latch_edge->count ().to_gcov_type ()
- / single_exit (loop)->count ().to_gcov_type ();
+ trip_count = get_estimated_loop_iterations_int (loop);
+ max_trip_count = get_max_loop_iterations_int (loop);
/* Perform SMS only on loops that their average count is above threshold. */
(int64_t) bb->count.to_gcov_type ());
fprintf (dump_file, "\n");
fprintf (dump_file, "SMS trip-count ");
- fprintf (dump_file, "%" PRId64,
- (int64_t) trip_count);
+ fprintf (dump_file, "%" PRId64 "max %" PRId64,
+ (int64_t) trip_count, (int64_t) max_trip_count);
fprintf (dump_file, "\n");
fprintf (dump_file, "SMS profile-sum-max ");
fprintf (dump_file, "%" PRId64,
latch_edge = loop_latch_edge (loop);
gcc_assert (single_exit (loop));
- if (single_exit (loop)->count ()> profile_count::zero ())
- trip_count = latch_edge->count ().to_gcov_type ()
- / single_exit (loop)->count ().to_gcov_type ();
+ trip_count = get_estimated_loop_iterations_int (loop);
+ max_trip_count = get_max_loop_iterations_int (loop);
if (dump_file)
{
we let the scheduling passes do the job in this case. */
if (stage_count < PARAM_VALUE (PARAM_SMS_MIN_SC)
|| (count_init && (loop_count <= stage_count))
- || (flag_branch_probabilities && (trip_count <= stage_count)))
+ || (max_trip_count >= 0 && max_trip_count <= stage_count)
+ || (trip_count >= 0 && trip_count <= stage_count))
{
if (dump_file)
{
" loop-count=", stage_count);
fprintf (dump_file, "%" PRId64, loop_count);
fprintf (dump_file, ", trip-count=");
- fprintf (dump_file, "%" PRId64, trip_count);
+ fprintf (dump_file, "%" PRId64 "max %" PRId64,
+ (int64_t) trip_count, (int64_t) max_trip_count);
fprintf (dump_file, ")\n");
}
break;