This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Inner loop unable to compute sufficient information during vectorization
- From: Ira Rosen <IRAR at il dot ibm dot com>
- To: Abhishek Shrivastav <abhishek dot shrivastav24 at gmail dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 26 May 2009 15:27:34 +0300
- Subject: Re: Inner loop unable to compute sufficient information during vectorization
gcc-owner@gcc.gnu.org wrote on 25/05/2009 21:53:41:
> for a loop like
>
> 1 for(i=0;i<N;i++)
> 2 for(j=0;j<N;j++)
> 3 a[i][j] = a[i][j]+b[i][j];
>
> GCC 4.3.* is unable to get the information for the inner loop that
> array reference 'a' is alias of each other and generates code for
> runtime aliasing check during vectorization.
Both current trunk and GCC4.4 vectorize the inner loop without any runtime
alias checks.
> Is it necessary to
> recompute all information in loop_vec_info in function
> vect_analyze_ref for analysis of inner loop also, as most of the
> information is similar for the outer loop for the program.
Maybe you are right, and it is possible to extract at least part of the
information for the inner loop from the outer loop information.
>
> Similarly, outer loop is able to compute correct chrec i.e. NULL , for
> array 'a' reference, while innerloop has chrec as chrec_dont_know, and
> therfore complaint about runtime alias check.
The chrecs are not the same for inner and outer loops, so it is reasonable
that the results of the data dependence tests will be different.
In this case, however, it seems to be a bug.
Ira