Do not use doloop pattern with pragma Unroll

This fixes the following Ada failure on 64-bit PowerPC:

-FAIL: gnat.dg/unroll4.adb scan-rtl-dump-times loop2_unroll "optimized:
loop unrolled 7 times" 2

The IVOPTS pass detects a doloop pattern and consequently discombobulates
the loop sufficiently as to make it hard for the RTL unrolling pass to
compute the best number of iterations.

gcc/ChangeLog:
	* tree-ssa-loop-ivopts.c (analyze_and_mark_doloop_use): Bail out if
	the loop is subject to a pragma Unroll with no specific count.
This commit is contained in:
Eric Botcazou 2020-10-23 09:51:46 +02:00
parent 98161c248c
commit 5f966d6897
1 changed files with 3 additions and 0 deletions

View File

@ -7947,6 +7947,9 @@ analyze_and_mark_doloop_use (struct ivopts_data *data)
if (!flag_branch_on_count_reg)
return;
if (data->current_loop->unroll == USHRT_MAX)
return;
if (!generic_predict_doloop_p (data))
return;