This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [autovect] [patch] branch merge





Daniel Berlin <dberlin@dberlin.org> wrote on 11/04/2005 01:24:41:

> It looks like someone has broken the dataref stuff so that it no longer
> tries to actually resolve the data dependence, even if you tell it to do
> "detailed analysis" (ie change the incorrect call in tree-loop-linear
> that passes false as the "detailed_analysis" parameter to
> compute_data_dependences).
>

I am looking into it. There are several issues here.

The first problem is in function compute_all_dependences. I changed it to
ignore dependences between the same data-ref, i.e., to avoid creation of
DDR with same DRA and DRB, and to avoid read-read dependencies. As I
understand, linear loop transform needs such DDRs. I'll fix this.

The second problem is that in build_classic_dist_vector incorrect access
function were analyzed in case of INDIRECT_REF. This problem existed before
my changes to data refs analysis. I am now working on the patch to fix this
problem. I'll send it soon.
Before checking distance, we must be sure, that the bases of the data refs
are the same. After that, we can check their access functions to build the
distance vector. The problem with INDIRECT_REF is that its access function
doesn't correspond to its base. E.g., for access function {p + offset, +,
4B} the base will be p, while it should not be the part of initial
condition. In my patch, I am going to fix the access function to {offset/4,
+, 1}.

There is another problem that causes failure in build_classic_dist_vector
on gcc_assert (lca_depth < nb_loops). I am working now to find the reason.

Ira



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]