Commit a9007865 by Jan Hubicka Committed by Jeff Law

re PR rtl-optimization/82849 (ICE on valid code since r254379)

2017-12-16  Jan Hubicka  <hubicka@ucw.cz>

	PR rtl-optimization/82849
	* modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
	and get_max_loop_iterations_int.

From-SVN: r255748
parent b4d43553
2017-12-16 Jan Hubicka <hubicka@ucw.cz>
PR rtl-optimization/82849
* modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
and get_max_loop_iterations_int.
2017-12-16 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
......@@ -1346,7 +1346,7 @@ sms_schedule (void)
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);
......@@ -1422,9 +1422,8 @@ sms_schedule (void)
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. */
......@@ -1444,8 +1443,8 @@ sms_schedule (void)
(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,
......@@ -1552,9 +1551,8 @@ sms_schedule (void)
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)
{
......@@ -1648,7 +1646,8 @@ sms_schedule (void)
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)
{
......@@ -1657,7 +1656,8 @@ sms_schedule (void)
" 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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment