[PATCH] Fix PR 38275, bootstrap failure with autopar enabled

Razya Ladelsky RAZYA@il.ibm.com
Tue Aug 25 12:19:00 GMT 2009


Hi,

This patch fixes the failure in bootstrap when autopar is enabled.
It failed due to "array subscript is above array" warning(treated as 
error)
at VRP pass. 
The case is of an array of size 4 which is accessed in a loop
that gets parallelized during autopar. 
The parallelization pass inserts this guard, 
if (niters > number_of_threads * MIN_PER_THREAD), 
where the right-hand side gets the value 400 at compile time.
VRP pass then detects that the last iteration accesses the array at 
index>400,
and yields the warning.
The solution (suggested by Zdenek) is to replace the compile-time 
profitability test
expected_loop_iterations (loop) <= n_threads
with
estimated_loop_iterations_int (loop, false) <= n_threads * MIN_PER_THREAD.

This check makes more sense for two reasons:
1. estimated_loop_iterations_int considers the ranges of the arrays 
accessed in the loop.
2. We make the compile time check compatible with the runtime check, which 
uses 
a threshold bigger than just number of threads.
 

Finally bootstrap with autopar enabled passes bootstrap on power6 linux
(tested for all languages except ada and java)
The patch introduces no new testsuite regressions.

The autopar suite needed some adjustments, as the testcases often had
too little iterations.

Ok for trunk?
Thanks,
Razya

2009-08-25  Razya Ladelsky  <razya@il.ibm.com>

      PR tree-optimization/38275
      * tree-parloops.c (parallelize_loops): Replace profitability 
condition
         for expected number of iterations.

2009-08-25  Alon Dayan  <alond@il.ibm.com>

      PR tree-optimization/38275
      * testsuite/gcc.dg/autopar/reduc-1char.c: Increase number of 
iterations. 
         Adjust the logic accordingly.
         * testsuite/gcc.dg/autopar/reduc-2char.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-1.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-2.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-3.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-6.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-7.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-8.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-9.c: Ditto.
         * testsuite/gcc.dg/autopar/pr39500-1.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-1short.c: Ditto.
         * testsuite/gcc.dg/autopar/reduc-2short.c: Ditto.
         * testsuite/gcc.dg/autopar/parallelization-1.c: Ditto.


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: boots_fix.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20090825/1e47a781/attachment.txt>


More information about the Gcc-patches mailing list